基本クラスがParentFormの4つのChildForm(1..4)があります。c#:どのchildformが(parentFormに属する)ボタンでクリックされたかを識別する方法?
ParentFormにはボタンがあります。
ChildFormは、ボタンが実際にクリックされたから知っている方法はありますか?あなたがそれらのいずれかを使用することができます
基本クラスがParentFormの4つのChildForm(1..4)があります。c#:どのchildformが(parentFormに属する)ボタンでクリックされたかを識別する方法?
ParentFormにはボタンがあります。
ChildFormは、ボタンが実際にクリックされたから知っている方法はありますか?あなたがそれらのいずれかを使用することができます
はい、反射のビットとあなたがそれを行うことができます。 EventHandlerの利用者では、親のタイプを取得するsender
対象:
Type ChildFormType = ((Button)sender).Parent.GetType();
はしかし、(型システムを照会)リフレクションを使用することを持つことは、多くの場合、悪いデザインのサインです。抽象accept
方法としてParentForm
が解決策になるかもしれないVisitor Pattern実装のいくつかの種類。
私はあなたの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)
{
}
をし、その後、クリックイベントハンドラに派生フォーム
にspecific_button1_Clickメソッドをオーバーライドします((もし 'のような何かを行うことができますボタンとしての送信者).Parent == child1) '? –