Как получить событие LinkClicked с использованием ArrayList LinkLabels в .NET

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

В настоящее время у меня такая настройка заключается в том, что у меня есть ArrayList LinkLabels, но проблема, с которой я столкнулся, заключается в том, как создать событие LinkClicked для каждого LinkLabel в ArrayList, чтобы оно отображало форму, специфичную для каждого отчета. .


person DoryuX    schedule 26.09.2008    source источник


Ответы (3)


Вы можете применить один и тот же обработчик событий к каждому LinkLabel в вашем списке и получить конкретный LinkLabel из аргумента отправителя.

person Austin Salonen    schedule 26.09.2008

Фактически, у меня был бы один обработчик событий для всех меток ссылок (добавьте обработчик во время процесса привязки данных ArrayList) с именем отчета, который будет загружен в метке CommandName LinkLabel. Когда срабатывает обработчик события, вы должны проверить атрибут CommandName и активировать соответствующую функцию для загрузки данного отчета.

person Stephen Wrighton    schedule 26.09.2008

Настоятельно рекомендуется использовать единый обработчик событий для всех динамических экземпляров LinkLabel.

Обычно я использую Hashtable, где ключом является экземпляр LinkLabel, а значением является то, что будет использоваться в событии клика (например, экземпляр отчета, если это уместно).

Затем в событии клика, которое вы используете (например)

Report r = m_TheTable[sender] as Report;
if( r != null ) r.DoSomething();
person Craig Eddy    schedule 26.09.2008