Добавить строковое свойство к визуальному C# linklabel?
Я совершенно новичок в визуальном C#. Хотя я могу управлять консольными приложениями, я легко теряюсь, когда дело доходит до форм кодирования.
В настоящее время я делаю "приложение запуска", который читает текстовый файл построчно. Каждая строка - это путь к полезной программе где-то еще на моем компьютере. Метка ссылки автоматически создается для каждого пути (т. Е. Каждой строки) в текстовом файле.
Мне бы хотелось, чтобы свойство.Text ярлыка ссылки представляло собой сокращенную форму пути (т. Е. Только имя файла, а не весь путь). Я узнал, как сократить строку таким образом (пока все хорошо!)
Тем не менее, я также хотел бы хранить полный путь где-нибудь - так как это то, на что мой linklabel должен будет ссылаться. В Javascript я мог бы просто добавить это свойство в linklabel следующим образом: mylinklabel.fullpath=line; (где строка - это текущая строка, когда мы читаем текстовый файл, а fullpath - это мое "пользовательское" свойство, которое я хотел бы попытаться добавить к метке ссылки. Я думаю, это нужно объявить, но я не уверен, каким образом.
Ниже приведена часть моего кода, которая создает форму, читает текстовый файл построчно и создает метку ссылки для пути, найденного в каждой строке:
private void Form1_Load(object sender, EventArgs e) //on form load
{
//System.Console.WriteLine("hello!");
int counter = 0;
string line;
string filenameNoExtension;
string myfile = @"c:\\users\jim\desktop\file.txt";
//string filenameNoExtension = Path.GetFileNameWithoutExtension(myfile);
// 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();
filenameNoExtension = Path.GetFileNameWithoutExtension(line); //shortens the path to just the file name without extension
mylinklabel.Text = filenameNoExtension;
//string fullpath=line; //doesn't work
//mylinklabel.fullpath=line; //doesn't work
mylinklabel.Text = filenameNoExtension; //displays the shortened path
this.Controls.Add(mylinklabel);
mylinklabel.Location = new Point(0, 30 + counter * 30);
mylinklabel.AutoSize = true;
mylinklabel.VisitedLinkColor = System.Drawing.Color.White;
mylinklabel.LinkColor = System.Drawing.Color.White;
mylinklabel.Click += new System.EventHandler(LinkClick);
counter++;
}
file.Close();
}
Итак, как я могу сохранить полный путь в виде строки внутри linklabel для использования в моей функции onclick позже?
Спасибо заранее
Джим
3 ответа
Использование Tag
свойство, то его можно получить, приведя первый параметр LinkClick
(object sender
) чтобы LinkLabel
:
mylinklabel.Tag = line;
в LinkClick
:
((LinkLabel)sender).Tag
Хранить полный путь в LinkLabel
Tag
Недвижимость, вы можете получить полный путь, как
string full path = myLinkLabel.Tag.ToString();
Надеюсь, это поможет.
Чтение из текстового файла не очень хорошо. Вы можете читать из XML-файла, тогда было бы очень просто создать ссылки и другие вещи. Пример XML:
<Programs>
<Program Name="Calculator" Path="calc">
<Program Name="Notepad" Path="C:\blabla">
</Programs>
Затем вы можете создать переменную имени и переменную пути и загрузить значения из файла. Но если вы новичок, то и текстовый файл тоже подойдет, но загружать значения каждой строки из файла очень сложно.