2016-01-22 3 views
0

Мне нужно создать пользовательскую форму Button - a Panel с 2 Label s для приятного визуального форматирования.Пользовательская кнопка: щелкните по этикетке

Но мне нужно нажать на панели с помощью Label с, чтобы вызвать event, например, MouseDown, или мне нужно назначить этот event для обеих меток.

Я попытался создать UserControl, но проблема осталась прежней - если я установил MouseDown событие в UserControl, метки в нем не позволяют кликнуть сам контроль.

Если установить в Label.Enable = false он решает эту проблему, но создать другой - текст на Label стать gray и это свойство не могу перезаписать (нужно черный текст и красным, когда некоторые events происходят).

+0

Что плохого назначать тому же обработчику событий для событий Click всех элементов управления? –

+0

@AdrianoRepetti, что он побуждает вас делать почти бесконечные операторы switch, которые определят выполненное действие. –

+0

@TimothyGroote нет, потому что (в этом случае) вам просто нужно вызвать действие _click_ независимо от того, где пользователь нажал кнопку. –

ответ

3

Что вы можете сделать, это распространять ваши MouseDownevent в вашем Label позвонить MouseDownevent для вашего Panel

private void panel1_MouseDown(object sender, MouseEventArgs e) { 
    //Do something here 
} 

private void label2_MouseDown(object sender, MouseEventArgs e) { 
    panel1_MouseDown(sender, e); 
} 

Чтобы отличить sender вы можете оставить sender для label случае же (Label) - не меняя его на Panel. На всякий случай вам понадобится некоторое различие в panel_MouseDown.

+0

Черт, ты пишешь быстрее меня: D – Gnqz

+0

@Gnqz ты написал тот же ответ ?? : D – Ian

+0

Был готов, но видел, что вы сделали это уже, поэтому я оставил его. – Gnqz

Смежные вопросы