2011-07-24 6 views
0

基本クラスがParentFormの4つのChildForm(1..4)があります。c#:どのchildformが(parentFormに属する)ボタンでクリックされたかを識別する方法?

ParentFormにはボタンがあります。

ChildFormは、ボタンが実際にクリックされたから知っている方法はありますか?あなたがそれらのいずれかを使用することができます

+0

にspecific_button1_Clickメソッドをオーバーライドします((もし 'のような何かを行うことができますボタンとしての送信者).Parent == child1) '? –

答えて

0

はい、反射のビットとあなたがそれを行うことができます。 EventHandlerの利用者では、親のタイプを取得するsender対象:

Type ChildFormType = ((Button)sender).Parent.GetType(); 

はしかし、(型システムを照会)リフレクションを使用することを持つことは、多くの場合、悪いデザインのサインです。抽象accept方法としてParentFormが解決策になるかもしれないVisitor Pattern実装のいくつかの種類。

0

私はあなたの4つのフォームのための4つの異なるクラス、ParentFormから派生したすべてを持っていることを理解しています。この場合、私はこのようにButtonClicked方法を実装します:

private void button1_Click(object sender, EventArgs e) 
    { 
     // part common to all the forms (possibly void) 
     specific_button1_Click(sender, e); 
     // part common to all the forms (possibly void) 
    } 

    protected void specific_button1_Click(object sender, EventArgs e) 
    { 
    } 

をし、その後、クリックイベントハンドラに派生フォーム

関連する問題