¿Cómo hago un evento en el Usercontrol y lo manejo en el formulario principal?

Tengo un usercontrol personalizado y quiero hacer algo relativamente simple.

Cuando un cambio numérico hacia arriba en el valor de ese control de usuario cambia, haga que el formulario principal actualice una ventana de visualización.

Esto no es un problema si el NUD no estaba en un control de usuario, pero no puedo encontrar la manera de controlar el evento mediante el formulario principal y no el control de usuario.

Debe crear un controlador de eventos para el control de usuario que se genera cuando se activa un evento desde el control del usuario. Esto le permitirá incluir el evento en la cadena para que pueda manejar el evento desde el formulario.

Al hacer clic en Button1 en UserControl, voy a disparar Button1_Click que activa UserControl_ButtonClick en el formulario:

Control de usuario:

 public event EventHandler ButtonClick; protected void Button1_Click(object sender, EventArgs e) { //bubble the event up to the parent if (this.ButtonClick!= null) this.ButtonClick(this, e); } 

Formar:

 UserControl1.ButtonClick += new EventHandler(UserControl_ButtonClick); protected void UserControl_ButtonClick(object sender, EventArgs e) { //handle the event } 

Intenta mapearlo. Intente colocar este código en su UserControl :

 public event EventHandler ValueChanged { add { numericUpDown1.ValueChanged += value; } remove { numericUpDown1.ValueChanged -= value; } } 

entonces su UserControl tendrá el evento ValueChanged que normalmente ve con el control NumericUpDown .

puedes hacer esto … el ejemplo siguiente muestra el cambio del valor del cuadro de texto (control de usuario)

  // Declare a delegate public delegate void ValueChangedEventHandler(object sender, ValueChangedEventArgs e); public partial class SampleUserControl : TextBox { public SampleUserControl() { InitializeComponent(); } // Declare an event public event ValueChangedEventHandler ValueChanged; protected virtual void OnValueChanged(ValueChangedEventArgs e) { if (ValueChanged != null) ValueChanged(this,e); } private void SampleUserControl_TextChanged(object sender, EventArgs e) { TextBox tb = (TextBox)sender; int value; if (!int.TryParse(tb.Text, out value)) value = 0; // Raise the event OnValueChanged( new ValueChangedEventArgs(value)); } } 

una de la manera más fácil de hacerlo es utilizar la función Landa sin ningún problema como

 userControl_Material1.simpleButton4.Click += (s, ee) => { Save_mat(mat_global); };