【发布时间】:2014-05-16 16:29:13
【问题描述】:
在 c# 中的 winform 上似乎有 10 个按钮。按钮 1、按钮 2、按钮 3 和按钮 10。当我单击 button3 时,我需要将 3 作为其编号。可以这样做吗?
private void button1_Click_1(object sender, EventArgs e)
{
MessageBox.Show(button1.number); //Show 1
}
【问题讨论】:
在 c# 中的 winform 上似乎有 10 个按钮。按钮 1、按钮 2、按钮 3 和按钮 10。当我单击 button3 时,我需要将 3 作为其编号。可以这样做吗?
private void button1_Click_1(object sender, EventArgs e)
{
MessageBox.Show(button1.number); //Show 1
}
【问题讨论】:
你可以使用 LINQ。
Button btn = (Button) sender;
int number = int.Parse(new string(btn.Name
.Reverse()
.TakeWhile(Char.IsDigit)
.Reverse().ToArray()));
【讨论】:
您应该将按钮命名为 1、2..etc
private void button1_Click_1(object sender, EventArgs e)
{
var button = (Button)sender;
MessageBox.Show(button.name);
}
【讨论】:
我只需将该数字添加到每个按钮的 AccessibleName 中,然后当代码捕获点击事件(所有按钮都应该相同)时,只需询问名称是什么:
Button btn = (Button) sender;
switch (btn.AccessibleName) {
case "1":
//blah
}
【讨论】:
有几种方法可以做到这一点:
将字符串“1”分配给按钮的Tag 属性,然后编写:
MessageBox.Show((sender as Button).Tag.ToString()); //Show 1
假设命名约定保持不变,使用子字符串去除名称的“按钮”部分:
string name = (sender as Button).Name;
MessageBox.Show(name.Substring(7)); //Show 1
Tag 的 MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag(v=vs.110).aspx
【讨论】: