0

0-9 (button0、button1、button2...) の 10 個のボタンがあります。これらのボタンのいずれかをクリックすると、それらに対して同じルーチンを実行したいと思います。これらのボタンのいずれかをクリックすると、以下のルーチンに移動する方法を知りたいです。

    private void button0_Click(object sender, EventArgs e)
    {
        int newValue;

        newValue = Convert.ToInt32(Button.text);
    }

私はすでに各ボタン、次にイベントのプロパティに入り、クリック イベントを button0_Click に変更しました (これにより、「button1.click、button2.click などを処理する」が「private void button0_Click(object sender , EventArgs e) "しかし、バックグラウンドでそれを行う場合は、それが機能する限り問題ありません。)

また、「 Convert.ToInt32(Button.text)」 (例: button2.text = "2")を使用して、押されたボタンを特定する方法を知る必要もあります。

4

3 に答える 3

0

handlesC# 言語は、イベントのバインドに使用しません(VB のように)。実際のバインディングのコードは、フォーム用に生成されたコードにあります。つまり、フォームを配置するとバックグラウンドにあります。

senderプロパティは、イベントが発生したコントロールへの参照です。コントロールの実際の型にキャストするだけです。

private void button0_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    int newValue = Convert.ToInt32(button.text);
}

ボタンのテキストを使用する代わりに (たとえば、アプリケーションを別の言語に翻訳したい場合、または単にテキストに依存したくない場合)、Tag各ボタンのプロパティに好きなものを入れることができます。イベントハンドラーでそれを取得します。

于 2013-10-09T16:44:32.547 に答える
0

それらをすべて同じイベントハンドラーに接続して、送信者からボタンを抽出することができます。

private void button0_Click(object sender, EventArgs e)
{
    var button = sender as Button
    if (button != null)
    {
        int newValue = Convert.ToInt32(Button.text);
    }
}
于 2013-10-09T16:44:40.163 に答える