2012-04-01 24 views
1

アルファベットのすべての文字がテキストとして設定されたボタンがあるとします。 これらのボタンで関数を呼び出し、この文字を引数として使用したいとします。 何らかの方法で各ボタンに同じコードを使用できますか?ボタンはC#で自分自身を参照する必要があります

何か

functionname(this.Text); 

のような問題は、フォームにしていない特定のボタンに「この」referrsこと、です。

+3

詳しい情報は、してください:あなたは完全にWindowsフォームやWPFまたは何か他のものを使用していますか?すでに試したことのあるコードサンプルを提供するかもしれません。 –

+0

また、この関数の呼び出しをトリガするのは何ですか?例えば。ボタンがクリックされていますか? –

答えて

1

ほとんどのイベントメカニズムでは、イベントのソースを取得できます。通風口の古典的な通気口では、これは通常「送付者」と呼ばれます。送信者をあなたが知っているものに、または共通のベースタイプにキャストすることができます。例:

void SomeEventHandler(object sender, SomeEventArgs e) { 
    string text = ((Control)sender).Text; 
    // ... 
} 

したがって、単一のイベントハンドラですべてのボタンを処理できます。

これは、インフラストラクチャ/ツール(WCF、XNAなど)の間で微妙に異なる場合がありますが、根本的に似ている必要があります。

1

このようなイベントハンドラ試してください:あなたは、その後AddHandler...のいずれかを使用して、「ロードオン」に、イベントハンドラを追加する必要がありますか、それはAsp.netページの場合は、onClick="button1_click"属性を使用することができます

protected button1_click(sender as object, e as EventArgs) { 
    var button1 = (Button) sender; 
    if (button1.Text == "A") { 
     //for example 
    } 
} 

を。

もっと具体的な回答については、私はもう少し詳細が必要です。

0

あなたは、フォーム上のすべてのボタンに同じイベントハンドラを使用することができます。

private void Form_Load(object sender, System.EventArgs e) 
{ 
    foreach (var btn in this.Controls.OfType<Button>()) 
    { 
     btn.Click += AllButtonClick; 
    } 
} 

private void AllButtonClick(Object sender, EventArgs e) 
{ 
    Button btn = (Button)sender; 
    String buttonText = btn.Text; 
} 
関連する問題