次のコードで問題が発生しました。
namespace Viewer
{
public partial class Form1 : Form
{
int count = 0;
LinkLabel[] linkLabel = new LinkLabel[200];
string filename;
string extension;
string filepath;
private void btnLoad_Click(object sender, EventArgs e)
{
// Creates a Directory for the Movies Folder
DirectoryInfo myDirectory = new DirectoryInfo(@"C:\Users\User\Movies");
// Creates a list of "File info" objects
List<FileInfo> ls = new List<FileInfo>();
// Adds filetypes to the list
ls.AddRange(myDirectory.GetFiles("*.mp4"));
ls.AddRange(myDirectory.GetFiles("*.avi"));
// Orders the list by Name
List<FileInfo> orderedList = ls.OrderBy(x => x.Name).ToList();
// Loop through file list to act on each item
foreach (FileInfo filFile in orderedList)
{
// Creates a new link label
linkLabel[count] = new LinkLabel();
// Alters name info for display and file calling
filepath = filFile.FullName;
extension = filFile.Extension;
filename = filFile.Name.Remove(filFile.Name.Length - extension.Length);
// Write to the textbox for functional display
textBox1.AppendText(filename + "\r\n");
// Alters link label settings
linkLabel[count].Text = filename;
linkLabel[count].Links.Add(0, linkLabel[count].Text.ToString().Length, filepath);
linkLabel[count].LinkClicked += new LinkLabelLinkClickedEventHandler(LinkedLabelClicked);
// Adds link label to table display
tblDisplay.Controls.Add(linkLabel[count]);
// Indexes count up for arrays
count = count + 1;
}
}
private void LinkedLabelClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(filepath);
}
}
}
私の目標は、起動時に追加するすべてのメディア ファイルへのリンクのテーブルを生成し、リンクによってそれぞれのプレーヤーでファイルが開かれるようにすることです。
現時点では、すべてのリンクが適切に生成されますが、いずれかをクリックすると、リストの最後の項目が起動されます。
たとえば、リストに「300」、「グラディエーター」、「トップ ガン」が含まれている場合、どのリンクをクリックしても「トップ ガン」が開きます。
これは、クリックイベントで変数「filepath」を呼び出すことに関係していると思いますが、これは最終状態のままです。ただし、個々のリンクで静的リンク値またはアクションを作成する方法については正確にはわかりません.
ヘルプ/アドバイスをいただければ幸いです。