¿Cómo agregar un control de usuario en un panel con un clic en el botón de otro control de usuario?

Tengo un panel1, 2 controles de usuario uc1 y uc2. uc1 se agrega al panel. uc1 tiene un buttonUC1. Cuando hago clic en ese botón, quiero ocultar el uc1 y mostrar el uc2 que tiene otro buttonUC2. Al hacer clic en buttonUC2, quiero ocultar uc2 y mostrar uc1 en el panel.

Si bien puede agregar, mostrar u ocultar el otro control a un panel en el formulario principal, pero en su lugar, es mejor presentar un evento desde el control de usuario que contiene el botón cuando se hizo clic en el botón, luego suscribirse para ese evento en su formulario y haga lo que necesite, por ejemplo, oculte su control y muestre el control del otro usuario en el panel de su formulario.

Aprender más:

  • Manipulación y crianza de eventos

Ejemplo:

El código para UserControl1 :

 [System.ComponentModel.DefaultEvent("ButtonClicked")] public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); button1.Click += button1_Click; } public event EventHandler ButtonClicked; protected virtual void OnButtonClicked(EventArgs e) { var handler = ButtonClicked; if (handler != null) handler(this, e); } private void button1_Click(object sender, EventArgs e) { OnButtonClicked(EventArgs.Empty); } } 

Y luego use el evento en su formulario:

 private void userControl11_ButtonClicked(object sender, EventArgs e) { MessageBox.Show("Button of UserControl1 Clicked!"); //or for example, userControl11.Hide(); userControl21.Show(); } 

No se olvide de suscribirse al evento ButtonClicked en su formulario, usando la pestaña de evento de la cuadrícula de propiedad o el código, o simplemente haga doble clic en su userControl11 en su formulario en tiempo de diseño.