ユーザーを追加/編集するデスクトップ アプリケーションを作成しています。どちらの関数も同じ入力を使用しますが、データを更新して新しいデータをデータベースに挿入するには、各関数で異なるクリック ハンドラーが必要になりますが、同じボタンを使用したい
同じボタンに異なるクリックハンドラーを割り当てる方法はありますか?
ユーザーを追加/編集するデスクトップ アプリケーションを作成しています。どちらの関数も同じ入力を使用しますが、データを更新して新しいデータをデータベースに挿入するには、各関数で異なるクリック ハンドラーが必要になりますが、同じボタンを使用したい
同じボタンに異なるクリックハンドラーを割り当てる方法はありますか?
私が思いついた解決策は次のとおりです。
public void displayEditButtons()
{
buttonPeopleOne.Text = "Save Changes";
this.buttonPeopleOne.Click -= new System.EventHandler(this.buttonPeopleOneClear_Click);
this.buttonPeopleOne.Click += new System.EventHandler(this.buttonPeopleOneSave_Click);
buttonPeopleTwo.Text = "Delete User";
this.buttonPeopleTwo.Click -= new System.EventHandler(this.buttonPeopleTwoNext_Click);
this.buttonPeopleTwo.Click += new System.EventHandler(this.buttonPeopleTwoDelete_Click);
//change other controls to match the function context
buttonPeopleChangeFunction.Visible = true;
this.labelPeopleFunctionHeader.Text = "Edit Current User";
}
public void displayAddButtons()
{
buttonPeopleOne.Text = "Clear";
this.buttonPeopleOne.Click -= new System.EventHandler(this.buttonPeopleOneSave_Click);
this.buttonPeopleOne.Click += new System.EventHandler(this.buttonPeopleOneClear_Click);
buttonPeopleTwo.Text = "Add Contact";
this.buttonPeopleTwo.Click -= new System.EventHandler(this.buttonPeopleTwoDelete_Click);
this.buttonPeopleTwo.Click += new System.EventHandler(this.buttonPeopleTwoNext_Click);
//change other controls to match the function context
buttonPeopleChangeFunction.Visible = false;
this.labelPeopleFunctionHeader.Text = "Add New User";
}
ボタンを変更する必要がある場合は、さまざまなメソッドを呼び出すだけです
はい、できます。
//Register both handlers within constructor
button1.Click += new EventHandler(InsertOperationHandler);
button1.Click += new EventHandler(UpdateOperationHandler);
-
private void InsertOperationHandler(object sender, EventArgs e)
{
}
private void UpdateOperationHandler(object sender, EventArgs e)
{
}