2017-12-29 20 views
0

私の質問は、私が「スクラッチパッド」と呼ぶラベルがあることです。C#ほとんど同じ動作のボタン

次に11個のボタン(0〜9の数字)があります。今、私の解決策は、現在、以下の通りである。

ノート:ドットはまだ実装されていません)

private void button0_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"0"; 

private void button1_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"1"; 

private void button2_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"2"; 

private void button3_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"3"; 

private void button4_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"4"; 

private void button5_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"5"; 

private void button6_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"6"; 

private void button7_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"7"; 

private void button8_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"8"; 

private void button9_Click(object sender, EventArgs e) => label_scratchpad.Text = label_scratchpad.Text + @"9"; 

がこれをコーディングするより良い方法はありますか?

+0

は、あなたのボタンは、テキスト '0'、 '1'を持っている、というように、あなたは同じアクションにそれらを指すことができ、その後、ボタンのテキストを追加した場合、ボタンは、その後のTextBlock – tabby

+0

に送信者をキャストし、同じイベントをしているしましょうボタンとして送信者から取得しました –

+0

@Mithgroth OPはボタンに割り当てられたメソッドの数を減らそうとしていますが、どのようにループでそれを行うべきですか? –

答えて

3

各ボタンがキャプションとして対応する番号を持っていると仮定すると、あなたがするすべてのイベントを追加するには、フォームのロードで、一部を結合イベントのために、設計時

private void button_Click(object sender, EventArgs e) 
{ 
    Button btn = (Button)sender; 
    label_scratchpad.Text = label_scratchpad.Text + btn.Text; 
} 
0

ですべてのボタンに同じハンドラを割り当てることができますボタン。

private void MyForm_Load(object sender, EventArgs e) 
{ 
    btn0.Click += digitClicked; 
    btn1.Click += digitClicked; 
    btn2.Click += digitClicked; 
    btn3.Click += digitClicked; 
    btn4.Click += digitClicked; 
    btn5.Click += digitClicked; 
    btn6.Click += digitClicked; 
    btn7.Click += digitClicked; 
    btn8.Click += digitClicked; 
    btn9.Click += digitClicked; 
} 

そして、あなたはbtn.Textを使用できない場合mnieto's solution

private void digitClicked(object sender, EventArgs e) 
{ 
    var btn = (Button)sender; 
    txtLogin.Text += btn.Text; 
} 
0

を使用し、私は、最終的な文字列0、1を..... stroreするボタンのTagプロパティを使用することになり、 9とドット。

private void button_Click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    label_scratchpad.Text = label_scratchpad.Text + (string)button.Tag; 
} 
関連する問題