Как создать событие LinkClicked, используя ArrayList LinkLabels в .NET
-
02-07-2019 - |
Вопрос
Я работаю над формой, в которой будут отображаться ссылки для открытия различных типов отчетов.В этой системе есть разные типы пользователей, поэтому пользователи должны иметь возможность видеть ссылки только на те типы отчетов, к которым они могут получить доступ.
В настоящее время способ, которым я это настроил, заключается в том, что у меня есть ArrayList LinkLabels, но проблема, с которой я сталкиваюсь, заключается в том, как создать событие LinkClicked для каждой LinkLabel в ArrayList, чтобы оно вызывало форму, специфичную для каждого отчета.
Решение
Вы можете применить один и тот же обработчик событий к каждой метке ссылки в вашем списке и получить конкретную метку ссылки из аргумента sender.
Другие советы
На самом деле, у меня был бы единый обработчик событий для всех linklabels (добавьте обработчик во время процесса привязки данных ArrayList) с именем отчета, который будет загружен в метку CommandName метки LinkLabel.Когда срабатывает обработчик событий, вы должны проверить атрибут CommandName и отключить соответствующую функциональность для загрузки данного отчета.
Определенно рекомендую использовать один обработчик событий для всех экземпляров dynamic LinkLabel.
Обычно я использую хэш-таблицу, где ключом является экземпляр LinkLabel, а значением - то, что будет использоваться в событии click (например, экземпляр report, если это уместно).
Затем в событии click, которое вы используете (например)
Report r = m_TheTable[sender] as Report;
if( r != null ) r.DoSomething();