我有10个按钮,0-9(按钮0,按钮1,按钮2 ......)。当我点击这些按钮中的任何一个时,我想对它们执行相同的例程。我想知道如何点击任何这些按钮,将它们引导到下面的例行程序。
private void button0_Click(object sender, EventArgs e)
{
int newValue;
newValue = Convert.ToInt32(Button.text);
}
我已经进入了每个按钮的属性,然后是事件,并将click事件更改为button0_Click(我原本认为这会添加“处理button1.click,button2.click等“after” private void button0_Click(object sender,EventArgs e)“但如果它在后台执行,只要它可以正常工作就可以。”
我还需要知道如何识别已按下的按钮,这就是我所处的“ Convert.ToInt32(Button.text)”(例如button2.text =“ 2" )。
答案 0 :(得分:2)
您可以为设计器中的所有按钮选择相同的事件处理程序(在属性窗口的事件选项卡中,选择事件,并且下拉所有已定义的事件处理程序)。
要获取点击了哪个按钮,请将sender
参数转换为按钮,然后你就可以了。
Button button = (Button)sender;
int value = int.Parse( button.Text );
编辑:此外,“Handles control.event”语法仅存在于Visual Basic中。
编辑:查看生成的代码(例如Form1.Designer.cs)以查看事件是如何连接的。
答案 1 :(得分:0)
C#语言不使用handles
来绑定事件(就像VB那样)。实际绑定的代码在表单的生成代码中,即在您放置的背景中。
sender
属性是对事件发生的控件的引用。您只需将其强制转换为控件的实际类型:
private void button0_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
int newValue = Convert.ToInt32(button.text);
}
作为使用按钮文本的替代方法(例如,如果您想将应用程序翻译成不同语言,或者根本不想依赖文本),您可以在{{{{{{ 1}}每个按钮的属性,并在事件处理程序中检索它。
答案 2 :(得分:0)
您可以将它们连接到同一个事件处理程序,从发件人中提取按钮,例如
private void button0_Click(object sender, EventArgs e)
{
var button = sender as Button
if (button != null)
{
int newValue = Convert.ToInt32(Button.text);
}
}