C#按钮几乎相同的动作

时间:2017-12-29 12:23:30

标签: c# .net

我的问题是我有一个标签,我称之为“暂存器”。

然后我有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";

有更好的方法对此进行编码吗?

3 个答案:

答案 0 :(得分:3)

假设每个按钮都有相应的编号作为标题,您可以在设计时为所有按钮指定相同的处理程序

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

答案 1 :(得分: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;
}

并使用mnieto's solution

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

答案 2 :(得分:0)

如果你不能使用btn.Text,我会使用按钮的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;
}