我是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