C# 按钮、if语句和bool导致问题-can';I don’’我不明白:(

C# 按钮、if语句和bool导致问题-can';I don’’我不明白:(,c#,if-statement,button,boolean,C#,If Statement,Button,Boolean,有一个问题,我一直在努力解决了最好的两个小时现在-我猜它的东西很简单 正在做一个tic-tac-toe游戏&通过点击按钮等将“X”添加到框中,使大部分游戏正常运行。 然而,当我检查是否有3在一行,它似乎没有注册 bool winner = false; if ((button1.Text == button2.Text) && (button2.Text == button3.Text) && (butt

有一个问题,我一直在努力解决了最好的两个小时现在-我猜它的东西很简单

正在做一个tic-tac-toe游戏&通过点击按钮等将“X”添加到框中,使大部分游戏正常运行。 然而,当我检查是否有3在一行,它似乎没有注册

                bool winner = false;


            if ((button1.Text == button2.Text) && (button2.Text == button3.Text) && (button1.Equals("X")))
            {
                winner = true;
                if (winner)
                {
                    MessageBox.Show("Awesome");
                }
这似乎根本不起作用。但是,如果我只做1个更改(在按钮1.Equals(“X”)之前添加!),如下所示

                bool winner = false;


            if ((button1.Text == button2.Text) && (button2.Text == button3.Text) && (!button1.Equals("X")))
            {
                winner = true;
                if (winner)
                {
                    MessageBox.Show("Awesome");
                }
它工作得非常好(在给我MessageBox.Show(“Awesome”);,这发生在我玩游戏之前,因为所有的按钮.text”都是空白的

为了以防万一,我用另一种方法(按钮单击、对象发送器等)为每个单击的按钮指定了一个值

另外-创建的所有按钮都是动态的。如下所示:

Button button1 = new Button();
        button1.Left = 0;
        button1.Top = 0;
        button1.Width = 100;
        button1.Height = 100;
        button1.Click += new EventHandler(Button_Click);
按钮2和3的应用方式相同。 在测试时,我发现这同样适用于按钮1、2和3:

Button button1 = new Button();
        button1.Left = 0;
        button1.Top = 0;
        button1.Width = 100;
        button1.Height = 100;
        button1.Text = "X";
        button1.Click += new EventHandler(Button_Click);
导致事件正常运行!(请注意按钮1.Text=“X”

你知道有什么问题吗

谢谢


@我现在编辑了这篇文章,并添加了更多你需要的代码。

Button1.Equals(“X”)
总是错误的。按钮永远不是字符串“X”。你想做的是
Button1.Text.Equals(“X”)

Button1.Equals(“X”)
永远是错误的。按钮永远不是字符串“X”。你想做
Button1.Text.Equals(“X”)

嗨,巴德,我刚试过,但它似乎仍然不起作用!我还试过使用clickedBtn.Enabled=false;如果((Button1.Text==button2.Text)&((button2.Text==button3.Text)&(!Button1.Enabled))将其作为禁用的条件但是仍然没有任何效果=/Try Button1.Text==“X”那么,按钮1、2和3上的文本不是“X”。您可能看到了错误的按钮,或者您正在将它们的
Text
属性设置为其他属性;小写
X
可能?啊,好吧,根据您所说的,我决定手动应用按钮5,6,7.Text=“X”进行测试…这似乎是可行的。所以我猜问题出在代码中:clickedBtn.Text=“x”;它似乎没有生成button1.Text=“x”,这很奇怪。有人能建议一种替代方法吗?@v3ng3anc3好吧,给我们看一下代码,在代码中,您正在手动创建按钮并添加事件处理程序(以及事件处理程序本身).到目前为止,你发布的代码不能告诉你太多。嗨,巴德,我刚刚尝试过,但它似乎仍然不起作用!我还尝试过使用clickedBtn.Enabled=false;如果((button1.Text==button2.Text)&&((button2.Text==button3.Text)&(!button1.Enabled))将其作为禁用条件但是仍然没有任何效果=/Try Button1.Text==“X”那么,按钮1、2和3上的文本不是“X”。您可能看到了错误的按钮,或者您正在将它们的
Text
属性设置为其他属性;小写
X
可能?啊,好吧,根据您所说的,我决定手动应用按钮5,6,7.Text=“X”进行测试…这似乎是可行的。所以我猜问题出在代码中:clickedBtn.Text=“x”;它似乎没有生成button1.Text=“x”,这很奇怪。有人能建议一种替代方法吗?@v3ng3anc3好吧,给我们看一下代码,在代码中,您正在手动创建按钮并添加事件处理程序(以及事件处理程序本身).你发布的代码告诉不了你多少。
Button button1 = new Button();
        button1.Left = 0;
        button1.Top = 0;
        button1.Width = 100;
        button1.Height = 100;
        button1.Text = "X";
        button1.Click += new EventHandler(Button_Click);