假设有一些按钮,字母表中的所有字母都设置为文本。 我想在这些按钮中调用一个函数,并使用这个字母作为参数。 我可以用某种方式为每个按钮使用相同的代码吗?
类似
functionname(this.Text);
问题是,“this”是指Form,而不是特定按钮。
答案 0 :(得分:1)
尝试这样的事件处理程序:
protected button1_click(sender as object, e as EventArgs) {
var button1 = (Button) sender;
if (button1.Text == "A") {
//for example
}
}
然后,您需要使用AddHandler...
在“加载”中添加事件处理程序,或者如果它是Asp.net页面,则可以使用onClick="button1_click"
属性。
有关更具体的答案,我需要更多详情。
答案 1 :(得分:1)
在大多数事件机制中,您可以获取事件的源;在经典的胜利形式通风口,这通常被称为“发送者”。您可以将发件人转换为您所知道的或某些常见的基本类型。例如:
void SomeEventHandler(object sender, SomeEventArgs e) {
string text = ((Control)sender).Text;
// ...
}
因此,单个事件处理程序可以处理所有按钮。
这可能在基础设施/工具(WCF,XNA等)之间略有不同,但从根本上应该保持相似。
答案 2 :(得分:0)
您可以为表单上的每个按钮使用相同的事件处理程序:
private void Form_Load(object sender, System.EventArgs e)
{
foreach (var btn in this.Controls.OfType<Button>())
{
btn.Click += AllButtonClick;
}
}
private void AllButtonClick(Object sender, EventArgs e)
{
Button btn = (Button)sender;
String buttonText = btn.Text;
}