カスタムユーザーコントロールがあり、比較的簡単なことをしたいです。
そのusercontrolの値が上下する数値が変わったときは、メインフォームに表示ウィンドウを更新させます。
NUDがユーザーコントロールにない場合、これは問題ではありませんが、ユーザーコントロールではなくメインフォームでイベントを処理する方法がわからないようです。
ユーザーコントロール内からイベントが発生したときに発生するユーザーコントロールのイベントハンドラーを作成する必要があります。これにより、イベントをチェーンにバブルアップして、フォームからイベントを処理できるようになります。
UserControlでButton1
をクリックすると、フォームでButton1_Click
をトリガーするUserControl_ButtonClick
を起動します。
ユーザー制御:
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);
}
形:
UserControl1.ButtonClick += new EventHandler(UserControl_ButtonClick);
protected void UserControl_ButtonClick(object sender, EventArgs e)
{
//handle the event
}
マッピングしてみてください。このコードをUserControl
に配置してください:
public event EventHandler ValueChanged {
add { numericUpDown1.ValueChanged += value; }
remove { numericUpDown1.ValueChanged -= value; }
}
UserControl
には、ValueChanged
コントロールで通常表示されるNumericUpDown
イベントが含まれます。
次のようにできます。
// 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));
}
}
それを行う簡単な方法の1つは、ランダ関数を問題なく使用することです
userControl_Material1.simpleButton4.Click += (s, ee) =>
{
Save_mat(mat_global);
};