Метки динамических ссылок

Я читал о метках динамических ссылок, но не нашел ответа. В моем коде я читаю файл .csv с базовой настройкой, которая проверяет строки, и если каждая третья заполнена, это ссылка. Все это находится в tableLayoutPanel. Я создаю ярлык так:

        tableLayoutPanel1.Controls.Add(new LinkLabel() { Text = "TEST",Name = count.ToString(),Tag = @"N:\reuther", Anchor = AnchorStyles.Left, AutoSize = true }, 2, 3);

Проблема, с которой я сталкиваюсь, заключается в том, что некоторые из этих столбцов могут быть пустыми, а это означает, что я действительно не знаю, сколько всего у меня будет в любой момент. Любые заметки, которые я видел в Интернете, называют динамическую ссылку, а затем продолжают использовать частную функцию, определяющую, что конкретная ссылка по имени была нажата. Я не могу этого сделать, потому что я никогда не узнаю, сколько ссылок потребуется до времени выполнения. Я могу (и сделал) в своем примере назвать ссылку, можно ли в любом случае использовать общее событие .Click, которое обнаружит любой щелчок, и в этот момент я могу просто открыть путь по тегу? Есть ли другой способ обойти это?

Спасибо.


person Marshal Alessi    schedule 29.03.2016    source источник


Ответы (1)


Немного повозившись, я решил проблему.

LinkLabel[] linkLabel = new LinkLabel[100];

        linkLabel[count] = new LinkLabel();
        linkLabel[count].Tag = @"N:\reuther";
        linkLabel[count].Text = "Click Me";
        tableLayoutPanel1.Controls.Add(linkLabel[count], 3, 4);

    private void LinkedLabelClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        string filepath = ((LinkLabel)sender).Tag.ToString();
        System.Diagnostics.Process.Start(filepath);
    }

В этом методе я создал массив, в котором хранится 100 меток ссылок. Когда я их создаю, я использую метод подсчета, чтобы подсчитать, сколько ссылок было создано. Для каждой ссылки я использовал .Tag для установки пути к файлу и, наконец, установил для строкового пути к файлу тег, что позволило мне впоследствии открыть его с помощью этой строки. Спасибо.

person Marshal Alessi    schedule 29.03.2016