2017-12-29 4 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

하자 버튼 1'', ​​당신의 버튼 텍스트를'0'이있는 경우 같은 이벤트가 다음 TextBlock의 – tabby

+0

에 보낸 사람을 캐스팅가, 등등, 당신은 같은 행동을 가리킬 수 있습니다, 다음 버튼 텍스트를 추가 Button으로 보낸 사람 –

+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

, 나는 마지막 문자열을 strore 버튼의 Tag 속성을 사용 사용 0, 1, ....., 9와 점.

private void button_Click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    label_scratchpad.Text = label_scratchpad.Text + (string)button.Tag; 
} 
관련 문제