私は C# の初心者で、以前は JavaScript でしかプログラムを作成したことがありません。
テキストファイルを1行ずつ読み取る「アプリランチャー」プログラムを作成しました。各行はプログラムへの単なるパスです (例: C:\Users\Jim\Desktop\Gravity.exe)
これまでのところ、私のプログラムは各行を正常に読み取り、リンクのリストを生成できます。意図したとおり、各リンクはパス自体として表示されます。
私が抱えている問題は、これらのリンクが機能しないことです。ただし、すべて同じ固定パスが与えられている場合は機能します。各リンクの .Text プロパティをリンク先として使用したいと思います。(以下の私のコードの「動作する」および「動作しない」というコメントを参照してください)。私が得る唯一のエラーは「指定されたファイルが見つかりません」です。
C# は Javascript よりもはるかに難しいと感じているので、これについて何か助けていただければ幸いです。
public partial class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e) //on form load
{
int counter = 0;
string line;
string myfile = @"c:\users\matt\desktop\file.txt";
// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader(myfile);
while ((line = file.ReadLine()) != null)
{
//MessageBox.Show(line); //check whats on each line
LinkLabel mylinklabel = new LinkLabel(); //LinkLabel tells us the type of the object e.g. string mystring ="hello";
mylinklabel.Text = line;
this.Controls.Add(mylinklabel);
mylinklabel.Location = new Point(0, 30 + counter * 30);
mylinklabel.Click += new System.EventHandler(LinkClick);
counter++;
}
file.Close();
}
private void LinkClick(object sender, System.EventArgs e)
{
//Process.Start(this.Text); //doesn't work
Process.Start(@"C:\Users\Jim\Desktop\gravity.exe"); //works
}
}
アップデート:
コメントありがとうございます。問題の行を次のように変更しました。
Process.Start(((LinkLabel)sender).Text);
...そしてそれは確かに機能します。しかし、構文が少し変わっていてわかりにくいので、この行について質問できるかもしれません。
オブジェクトsender
のプロパティではありませんか? LinkLabel
それを参照するには、 を使用するべきではありませんLinkLabel.sender
か? (LinkLabel)sender
(これはより JavaScript スタイルになります!表記がわかりません)
私も理解していません:
private void LinkClick(object sender, System.EventArgs e)
スペース とはどういう意味ですか? との間object
など sender
またはSystem.EventArgs
eの間? LinkClick
はイベントの名前ですが、なぜ 2 つのものがコンマで区切られているのでしょうか?
お分かりのように、私は現在、C# 構文が少し難しいと感じています!
前もって感謝します。