Добавить строковое свойство к визуальному c # linklabel? - PullRequest
1 голос
/ 10 мая 2011

Я совершенно новичок в Visual 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();

    }

Итак, как я могу сохранить полный путь в виде строки внутри метки ссылки для использования в моей функции onclick позже?

Большое спасибо заранее

Jim

Ответы [ 3 ]

5 голосов
/ 10 мая 2011

Используйте свойство Tag, затем его можно получить, приведя первый параметр LinkClick (object sender) к LinkLabel:

mylinklabel.Tag = line;

в LinkClick:

((LinkLabel)sender).Tag
0 голосов
/ 10 мая 2011

Чтение из текстового файла не очень хорошо.Вы можете читать из XML-файла, тогда было бы очень просто создать ссылки и другие вещи.Пример xml:

<Programs>
<Program Name="Calculator" Path="calc">
<Program Name="Notepad" Path="C:\blabla">
</Programs>

Затем вы можете создать переменную имени и переменную пути и загрузить значения из файла.Но если вы новичок, то и текстовый файл тоже подойдет, но загружать значения каждой строки из файла - боль.

0 голосов
/ 10 мая 2011

Сохраняйте полный путь в LinkLabel Tag Свойстве, вы можете получить полный путь, например

string full path = myLinkLabel.Tag.ToString();

Надеюсь, эта помощь.

...