Vb.net 防止代码更改禁用的按钮';s文本(VB)

Vb.net 防止代码更改禁用的按钮';s文本(VB),vb.net,visual-studio,Vb.net,Visual Studio,作为学校的最后一个项目,我正在做一个井字游戏。基本前提是在按钮上单击按钮文本进入“X”并禁用按钮,然后随机选择按钮周围的按钮,使其变为“O”。(我正在尝试制作一个可以玩的假AI) 好吧,问题是;即使该按钮在单击时被禁用,当您单击其附近的另一个按钮时,另一个按钮上的文本也可以被禁用。例如,如果您按下按钮A1,机器人会在B2上放置一个“O”,然后按下A2,即使A1被禁用,但机器人会将A1更改为“O” 那么,您如何不允许代码更改文本呢? 代码如下:在您的代码中有一堆类似的if语句块,在这些语句块中,

作为学校的最后一个项目,我正在做一个井字游戏。基本前提是在按钮上单击按钮文本进入“X”并禁用按钮,然后随机选择按钮周围的按钮,使其变为“O”。(我正在尝试制作一个可以玩的假AI)

好吧,问题是;即使该按钮在单击时被禁用,当您单击其附近的另一个按钮时,另一个按钮上的文本也可以被禁用。例如,如果您按下按钮A1,机器人会在B2上放置一个“O”,然后按下A2,即使A1被禁用,但机器人会将A1更改为“O”

那么,您如何不允许代码更改文本呢?
代码如下:

在您的代码中有一堆类似的
if
语句块,在这些语句块中,您测试变量
rnd
(由您的bot进行选择),然后根据该值设置按钮的文本:

If rnd = 1 Then
    Button3.Text = "O"
    Button3.Enabled = False
End If
If rnd = 2 Then
    Button6.Text = "O"
    Button6.Enabled = False
End If
If rnd = 3 Then
    Button5.Text = "O"
    Button5.Enabled = False
End If
如果您添加了一个
条件来测试该按钮是否启用,那么您应该对问题中的问题进行修复

请像这样尝试:

If rnd = 1 And Button3.Enabled Then
    Button3.Text = "O"
    Button3.Enabled = False
End If
If rnd = 2 And Button6.Enabled Then
    Button6.Text = "O"
    Button6.Enabled = False
End If
If rnd = 3 And Button5.Enabled Then
    Button5.Text = "O"
    Button5.Enabled = False
End If

依此类推,对于代码中类似于这些语句的不同组的
if
语句。

寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。请参阅:。此外,VB.Net不是VBA如果所需的行为是在按钮单击时,则按钮将被禁用,并使其成为按钮文本不能被任何更改的状态;即使被告知这样做。然后程序将在其附近随机放置一个“O”。我禁用了按钮,并在单击时随机放置了一个框,但如果您在另一个框上尝试此操作,它可以操纵禁用的按钮文本。我发现这很难解释,上面的图片解释得更好。这是缩短的代码,所以当'AiIsDone'=true时,玩家可以点击一个按钮,而这个按钮反过来会使该按钮=false?另外,在这段代码中,我将把buttonx.text=“O”?aiIsDone=True放在哪里?这只是退出循环的条件。只要把它放在if(btnOne==false)的条件下,如果是AI,将文本更改为buttonx.text=“O”else“X”,if语句中的double equals会给出一个“Expression detected”错误。您还想让我将“bool”更改为Boolean还是为bool生成一个类?你能对代码进行注释和/或详细说明,以便像我这样的新手能更好地理解它吗?抱歉给你添麻烦了。
//assign bool for 9 buttons

Dim btnOne as bool
Dim btnTwo as bool

Dim aiIsDone as bool;

aiIsDone = false;
//and so on..


Do While (aiIsDone == false) //Loop until it finds an unoccupied value

//assign random numbers
Dim value As Integer = CInt(Int((9 * Rnd()) + 1))

if (value == 1) then

    if(btnOne == false) then //Check the random result if it is not occupied yet
    // Some code
    btnOne = true //turn the button to occupied so it will not pick the same button again
    aiIsDone = True //this will exit the loop

// continue statement for 9 buttons

end if

Loop

//Do something if all 9 are occupied (value is true)