间接引用按钮

时间:2015-08-01 18:54:56

标签: c# button this

我有这个代码:

private void b9_Click(object sender, EventArgs e)
{
    b9.Enabled = false;
    color = 8;
}

问题在于我有很多禁用按钮。我有可能使用类似的东西:

this.Enabled=false;

3 个答案:

答案 0 :(得分:3)

可能这就是你想要的

private void OnClick(object sender, EventArgs e)
{
    if( sender is Button )
    {
        Button button = (Button)sender;
        button.Enabled = false;
    }
}

将此例程用于您需要在点击时禁用的每个按钮。

答案 1 :(得分:1)

它被称为多个控件的单个事件处理程序。只需为您的按钮添加以下事件处理程序即可。

public void Button_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    button.IsEnable = false;

    // If you want to access text in the button
    ... = button.Content as object;
}

答案 2 :(得分:-1)

private void OnClick(object sender, EventArgs e)
{
    Button btn = sender as Button; // if sender is not a Button, btn will be null
    if (btn != null)
    {
        btn.Enabled = false;
    }
}

如果要对任何可单击控件应用相同的行为,可以使用Control类而不是Button。 Button继承自Control,属性Enabled在Control类中定义。

private void OnClick(object sender, EventArgs e)
{
    Control ctrl = sender as Control; // if sender is not a Control, ctrl will be null
    if (ctrl != null)
    {
        ctrl .Enabled = false;
    }
}

此外,如果您想更进一步,可以创建一个禁用单击控件的方法。像这样:

private void DisableControl(object sender)
{
    Control ctrl = sender as Control;
    if (ctrl != null)
    {
         ctrl.Enabled = false;
    }
}

然后,您可以通过Click even处理程序调用此方法,如下所示:

private void OnClick(object sender, EventArgs e)
    {
        DisableControl(sender);
    }