无法从字符串转换为system.windows.forms.string iwin32window

时间:2010-05-24 13:14:17

标签: c#

这应该显示xWinner表格标签的获胜者,但我无法弄明白。 xWinnerForm.Show(b1.Text);.我是c#的新手,所以请你以外行的方式解释谢谢。

       static public bool CheckWinner(Button[] myControls)
    {
        bool gameOver = false;
        for (int i = 0; i < 8; i++)
        {
            int a = Winners[i, 0];
            int b = Winners[i, 1];
            int c = Winners[i, 2];

            Button b1 = myControls[a], b2 = myControls[b], b3 = myControls[c];
            if (b1.Text == "" || b2.Text == "" || b3.Text == "")
                continue;
            if (b1.Text == b2.Text && b2.Text == b3.Text)
            {
               gameOver = true;

                Form xWinnerForm = new xWinnerForm();
                xWinnerForm.Show(b1.Text);


            }


    public void Show(string text)
    {
        this.xWinnerLabel.Text = text;
        this.Show();
    }

        }
        return gameOver;
    }

3 个答案:

答案 0 :(得分:0)

这是使其发挥作用所需的最小变化:

xWinnerForm xWinnerForm = new xWinnerForm();

虽然除了这个之外我还建议做一些改动:

  • 对类名使用PascalCase,但对变量名使用驼峰大小写。

XWinnerForm xWinnerForm = new XWinnerForm();

  • 不要以这种方式重载Show。而是更改表单的构造函数以接受额外的数据,或者在表单中添加setter。

XWinnerForm xWinnerForm = new XWinnerForm(b1.Text);

  • 请勿使用a, b, c, b1之类的名称:

XWinnerForm xWinnerForm = new XWinnerForm(labelWinner.Text);

答案 1 :(得分:0)

目前,变量(xWinnerForm)的输入为FormForm的{​​{1}}方法具有不同的签名。相反,告诉它Show的具体类型 - 也许是Form(您的班级名称......)。或者使用不同的方法名称(WinnerForm会引起混淆)。

答案 2 :(得分:0)

Form xWinnerForm = new xWinnerForm();

这一行是你的问题。因为您将变量声明为Form,所以编译器不知道您的Show(string)函数。

顺便说一句,使用与其类型相同的变量名称通常是不好的形式。

相反,做这样的事情:

xWinnerForm winner = new xWinnerForm();

winner.Show(b1.Text);