2011-02-08 7 views
3

私はボタンが追加されたGUIアプリケーションを持っています。いくつかのプラグインDLLでは、新しいボタンが作成され、既存のボタンの代わりにGUIに追加する必要があります。C#ボタンを別のボタンに割り当てる

ButtonA = ButtonBと言うだけの方法はありますか?または、実行時にGUIからボタンを削除してから、新しいボタンを追加する必要がありますか?

ありがとうございました。

+6

既存のボタンのイベントハンドラメソッドを変更することができます。ボタンはボタンです。 –

答えて

3

それとも、単に別のハンドラにリンクすることができ、のようなもの:あなたは新しいを作成する場合

古いClickイベントハンドラー

private void ButtonA_Click(object sender, EventArgs e) 
{ 
//Do sth 
} 

は、あなたの新しいイベントハンドラ(などをクリックしてくださいボタン)

private void ButtonB_Click(object sender, EventArgs e) 
{ 
//Do sth 
} 

、あなたが最初のハンドラを削除し、新しいハンドラを追加する必要があります。

ButtonA.Click -= this.ButtonA_Click; 
ButtonA.Click += new EventHandler(ButtonB_Click); 
1

あなたはいくつかの親(フォームなど)にボタンを追加します。つまり、元のボタンをFormのControlsコレクションから削除し、新しいボタンを追加する必要があります。または、Controlsコレクション内のボタンを置き換えることもできます。

のコレクションを反復処理した後、あなたはボタンが第5 'の要素である、あなたはこのような何かを行うことができますを見つけるとしましょう:

this.Controls[4] = ButtonB; 

私はこれがあなたことを意味している場合は100%わからないんだけどGUIを更新するために手動で画面を無効にする必要があります。その場合、コールButtonB.Invalidate();

0

最初に作成されたボタンの2番目のボタンから興味のあるプロパティをコピーし、Controlsコレクションから最初のボタンを削除するか、または.Visibleをfalseに設定します。

古いイベントハンドラを手動で呼び出す必要があるため、イベントには問題があります.OnClick(または他のイベント)のサブスクライバを読み込む方法はありません。

関連する問題