通过按钮控制输入
本文关键字:输入 控制 按钮 | 更新日期: 2023-09-27 18:28:58
我制作了一个Tic-Tac-Toe游戏,我正在尝试添加一些功能。我习惯于用处理被拿走的按钮
button.enabled=false;
问题是按钮上的文字变成了灰色。
所以我为每个按钮点击了一个按钮:A1_Click、A2_Click等
这是我在A1_click中的代码,其他按钮也是如此,唯一改变的是"A1"、"A2"等等
Button b = (Button)sender;
if (!A1.Text.Equals(""))
{
MessageBox.Show("Not A Valid Input");
}
当我点击一个我以前已经点击过的按钮时,我会得到"无效输入",我只想能够点击另一个按钮。如果我点击一个已经点击的按钮
根据我所读的内容,我想我知道你在找什么。您正在寻找一种方法来迫使用户在单击已执行的按钮时失去回合,并且您不希望将enabled属性设置为false。如果这是你想要的,那么我可能有一些代码可以帮助你。首先,如果你将相同的点击事件分配给具有不同功能的多个按钮,你应该尝试这样的方法:
for (int i = 1; i < 10; i++)
{
string currentButtonName = "A" + i;
Control currentButton = this.Controls.Find(currentButtonName, true).FirstOrDefault();
currentButton.Click += OnGameButton_Click;
}
这样做的目的是在表单中搜索具有指定名称的控件,由于按钮的名称相似,我们可以很容易地搜索它们。然后,我们可以将一个特定的函数绑定到所有这些函数,这样你就只有1个函数来修改,而不是9个函数,并且你可以验证它们是否都工作相同。以下是OnGameButton_Click()
事件代码:
private void OnGameButton_Click(object sender, EventArgs e)
{
if (!hasGameStarted || shouldLoseTurn)
return;
// This is the current button user pressed
Button b = (sender as Button);
if (b.Name.Contains('A') && b.Enabled)
{
if (!b.Text.Equals(""))
{
MessageBox.Show("Not A Valid Input! You have lost your turn.");
shouldLoseTurn = true;
}
else
{
b.Text = currentPlayersLetter;
shouldLoseTurn = false;
}
}
}
正如你所看到的,通过一些标志,我们可以监控游戏,并迫使按钮做出相应的反应。看看功能的开头。我们必须验证游戏是否参与,并且当前用户没有因为按下同一按钮而失去回合。从那时起,我们只需要修改您所拥有的内容,这样,如果他们按下同一按钮两次,我们就会根据需要修改shouldLoseTurn
标志。
另一种方法是简单地使用Button.Enabled
属性来禁用按钮。我知道你不知道什么按钮会变灰,但如果你为按钮创建自己的风格指南,你可以随心所欲。不过,这可能很有挑战性,因为您必须修改按钮的默认样式模板才能实现这一点。这是另一个问题,讨论的只是