【问题标题】:Disabling a button in C# WITHOUT setting btn.Enabled = false;?禁用 C# 中的按钮而不设置 btn.Enabled = false;?
【发布时间】:2013-05-06 05:40:35
【问题描述】:

除了button1.Enabled = false;,还有其他方法可以禁止用户点击吗?

我正在 WinForms 中实现简单的井字游戏,如果我使用 Enabled 属性,按钮文本的颜色会变成灰色,这严重破坏了我的用户界面。

我想保留按钮的格式,只是禁止用户进一步点击。

【问题讨论】:

  • 您的点击方法可以有条件地决定在点击时什么都不做。
  • 在后面添加代码的基本部分可能会有所帮助。
  • 您想真正阻止任何点击视觉,还是只是避免用户点击后的任何交互?如果是第二个,您可以轻松放置一个布尔值,并在需要时立即返回。
  • 点击事件属于Control类。每个控件都有一个点击事件。例如一个图片框

标签: c# winforms button


【解决方案1】:

可能最简单的方法是在事件处理程序被调用后分离它。

void HandleClick(object sender, EventArgs e)
{
    ((Button)sender).Click -= HandleClick;

    // Handle the click  
}

【讨论】:

  • 谢谢,这确实是最简单的解决方案。
【解决方案2】:

您可以为所有按钮示例保留一个布尔数组

bool [] buttonClicked = new bool [9];

那么你有 9 个按钮点击事件处理程序

private void button1_Clicked(object sender, EventArg e)
{
    if(buttonClicked[0]==true)
      return;
    else
    {
        // your code goes here
        // mark this button in boolean array as clicked
        buttonClicked[0] = true;
    }
}

并且不要忘记在每个新游戏中将 buttonClicked 数组值重置为 false

for(int i=0;i<9;i++)
{
    buttonClicked[i]=false;
}

希望对你有帮助

【讨论】:

    【解决方案3】:

    您可以在每个方格中放置一个标签和一个按钮。当按钮被按下时,它会隐藏自己(将 Visible 设置为 false)并显示标签(再次通过设置其 Visible 属性)。标签文本可以设置为 O 或 X。

    【讨论】:

      猜你喜欢
      • 2012-07-14
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2013-06-05
      • 2018-10-23
      • 1970-01-01
      • 2021-10-01
      相关资源
      最近更新 更多