Usuário com melhor resposta
Capturar no form qualquer click na UserControl

Pergunta
-
Bom dia pessoal,
Tenho um Form com uma UserControl inserida nele. Preciso nesse Form capturar todos os click dados na UserControl, independente se foi dado em cima de um Button TextBox, ListView.... qualquer objeto.
Se eu ativar no Form o KeyPreview, em qualquer parte da UserControl que eu digitar algo o evento é passado para o Form quero a mesma coisa com o mouse.
Um forte abraço a todos
Respostas
-
Elias,
Mas, você pode implementar uma melhoria para fazer o attach em todos os controles de uma só vez... Veja só:
public partial class UserControl1 : UserControl { public delegate void OnClickControls(object sender, EventArgs e); [Browsable(true)] public event OnClickControls ClickControls; public UserControl1() { InitializeComponent(); AttachClickHandlers(); } private void AttachClickHandlers() { this.Click += UserControl1_Click; foreach (Control control in this.Controls) control.Click += UserControl1_Click; } private void DetachClickHandlers() { foreach (Control control in this.Controls) control.Click -= UserControl1_Click; } private void UserControl1_Click(object sender, EventArgs e) { if (ClickControls != null) ClickControls(sender, e); } }
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Marcado como Resposta Elias Júnior quarta-feira, 27 de julho de 2011 14:45
Todas as Respostas
-
Elias,
Veja se isto te ajuda em algo:
http://bytes.com/topic/c-sharp/answers/232638-user-control-click-event-handling
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
-
Elias,
Mas, você pode implementar uma melhoria para fazer o attach em todos os controles de uma só vez... Veja só:
public partial class UserControl1 : UserControl { public delegate void OnClickControls(object sender, EventArgs e); [Browsable(true)] public event OnClickControls ClickControls; public UserControl1() { InitializeComponent(); AttachClickHandlers(); } private void AttachClickHandlers() { this.Click += UserControl1_Click; foreach (Control control in this.Controls) control.Click += UserControl1_Click; } private void DetachClickHandlers() { foreach (Control control in this.Controls) control.Click -= UserControl1_Click; } private void UserControl1_Click(object sender, EventArgs e) { if (ClickControls != null) ClickControls(sender, e); } }
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Marcado como Resposta Elias Júnior quarta-feira, 27 de julho de 2011 14:45
-