按钮应该在C#中引用自身

时间:2012-04-01 21:14:58

标签: c#

假设有一些按钮,字母表中的所有字母都设置为文本。 我想在这些按钮中调用一个函数,并使用这个字母作为参数。 我可以用某种方式为每个按钮使用相同的代码吗?

类似

functionname(this.Text);

问题是,“this”是指Form,而不是特定按钮。

3 个答案:

答案 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;
}