lo que quiero hacer es que en el form1 muestre un user control, y cuando le de a un boton dentro ese user control, haga .BringToFront(); de otro user control dentro del form1, no se si me entiendes.
1. ¿Qué has intentado hacer para solucionarlo?, muestra el código... en el foro no se pide ni se hacen tareas.
2. ¿Qué es exactamente en lo que tienes dificultades con ese problema?.
De todas formas te explico, basicamente lo único que tienes que hacer es controlar el evento
Button.Click del botón hijo de tu user control, y ahí invocas un evento base, es decir, un evento existente en la clase de tu user control.
Por si no lo has entendido bien, lo explicaré de otra forma: en la clase de tu user control, lo primero de todo debes declarar y exponer un evento llamado 'Click' (o como lo quieras llamar, eso no importa), luego hace falta que añadas un método llamado 'OnClick' que servirá para invocar el evento 'Click'. Ya tienes creado el evento y el invocador del evento, bien, ahora, debes añadir otro método para controlar el evento 'Button.Click' del botón hijo, y en el bloque de código de ese controlador del evento 'Button.Click' debes invocar el evento 'Click' base, es decir, el evento que declaraste en tu user control, llamando al invocador del evento (el método 'OnClick').
Si estás heredando la clase
UserControl o cualquier otra clase que herede de la clase
Control (como sería lógico suponer que estás haciendo), entonces puedes saltarte unos cuantos pasos, puesto que dicha clase ya expone un evento llamado
Click que lo heredas y del cual podemos servirnos de la siguiente manera:
[DefaultEvent("Click")]
public class MyUserControl : UserControl {
protected Button ChildButton;
public MyUserControl() {
this.ChildButton = new Button
(); this.ChildButton.Click += this.ChildButton_Click;
this.Controls.Add(this.ChildButton);
}
private void ChildButton_Click(object sender, EventArgs e) {
base.OnClick(e);
}
}
Te muestro la forma que expliqué de hacerlo al principio, es decir, creando un nuevo evento:
[DefaultEvent("ClickButton")]
public class MyUserControl : UserControl {
protected Button ChildButton;
public event EventHandler<EventArgs> ClickButton;
public MyUserControl() {
this.ChildButton = new Button
(); this.ChildButton.Click += this.ChildButton_Click;
this.Controls.Add(this.ChildButton);
}
protected virtual void OnClickButton(EventArgs e) {
if (this.ClickButton != null) {
this.ClickButton(this, e);
}
}
private void ChildButton_Click(object sender, EventArgs e) {
this.OnClickButton(e);
}
}
Ese último ejemplo serviría para diferenciar un tipo de click de otro, es decir, diferenciar un click en la superficie del user control (controlando el evento
MyUserControl.Click), de un click en el botón (controlando el evento
MyUserControl.ClickButton).
Saludos