Я новичок в C # и ранее писал только программы на JavaScript, так что будьте спокойны!
Я написал программу для запуска приложений, которая читает текстовый файл построчно. Каждая строка - это просто путь к программе, например 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
е? LinkClick
- это название события, но почему у нас есть две вещи, разделенные запятой?
Как вы можете сказать, в настоящее время я нахожу синтаксис C # немного сложным!
Заранее спасибо.