我是C#的新手,并且以前只使用JavaScript编写程序,所以轻松点我!C#的新手问题 - 链接标签和函数的问题
我写了一个“app启动程序”程序,它逐行读取文本文件。每一行只是程序的一个路径,例如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
? (这将是更多的JavaScript的风格,我不明白(LinkLabel)sender
符号!)
我也想不明白:
private void LinkClick(object sender, System.EventArgs e)
是什么空间呢?如object
和sender
之间?或者System.EventArgs
e? LinkClick
是事件的名称,但为什么我们在这里有两件事,用逗号分隔?你可以告诉我,我目前发现C#语法有点难!
预先感谢您。
@user:欢迎StackOverflow上,但仅供参考,StackOverflow的是Q&A网站,而不是一个讨论的论坛,所以我们不使用 “你好” 或 “谢谢”,或签名。 – 2011-05-02 18:43:10
@user你需要的是关于C#的教程。之后,事情应该对你更清楚。 – dandan78 2011-05-04 11:47:45