间接引用按钮

Indirect reference to a button

我有这个代码:

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

问题是我有很多禁用按钮。我有机会使用类似的东西吗:

this.Enabled=false;

可能这就是你想要的

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

对需要在单击时禁用的每个按钮使用此例程。

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 class 而不是 Button。 Button继承自Control,属性Enabled定义在Controlclass.

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 事件处理程序调用此方法:

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

它被称为多个控件的单个事件处理程序。只需根据需要为您的按钮放置以下事件处理程序。

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