我有十个按钮,其值为0到9;即计算器按钮。
目标:
如果我点击第一个按钮,它会在textbox
上显示 0 。
我希望尽可能缩短编码时间,而无需在按钮点击功能内编码。
这是我的相关代码:
private Main main;
public CalculatorClass calculatorClass = new CalculatorClass();
private List<Button> buttons = new List<Button>();
public Calculator(Main main)
{
InitializeComponent();
this.main = main;
}
private void Calculator_Load(object sender, EventArgs e)
{
for (int x = 0; x >= buttons.Count; x++)
{
txtNumPad.Text = buttons[x].Click; //not working!
}
}
private void btnClose_Click(object sender, EventArgs e)
{
main.EnableButton();
this.Dispose();
}
另外,我不想这样做:
btnZero.Text = "";
btnOne.Text = "";
btnTwo.Text = "";
btnThree.Text = ""; ...and so on
txtNumPad.Text = btnZero.Text;
答案 0 :(得分:3)
您可以做的是为所有按钮分配相同的点击功能:
foreach (var btn in buttons)
{
btn.Click += btn_Click;
}
然后在点击事件中,您不关心触发了哪个按钮,因为它是一个按钮,您想要添加它的文本:
void btn_Click(object sender, EventArgs e)
{
var btn = sender as Button;
if (btn != null)
{
txtNumPad.Text = txtNumPad.Text + btn.Text;
}
}
但是如果不使用点击功能,您将无法通过点击对按钮做出反应。
答案 1 :(得分:2)
不清楚你要做什么 但你可以试试按钮[x] .Text ,或者简要说明你想做什么,以便我可以提供帮助
答案 2 :(得分:2)
private void Calculator_Load(object sender, EventArgs e)
{
List<Button> buttons = new List<Button>();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Click += Program_Click;
btn.Text = i.ToString();
buttons.Add(btn);
}
}
void Program_Click(object sender, EventArgs e)
{
txtNumPad.Text = txtNumPad.Text + ((Button)sender).Text;
}