C#无法将随机字符串转换为文本框

时间:2016-03-29 16:14:00

标签: c#

    private void Start_Click(object sender, EventArgs e)
    {

    string[] words = new string[10];
        words[0] = "Starks";
        words[1] = "Lannisters";
        words[2] = "Tullys";
        words[3] = "Greyjoys";
        words[4] = "Arryns";
        words[5] = "Baratheons";
        words[6] = "Tyrells";
        words[7] = "Martells";
        words[8] = "Targaryans";
        words[9] = "Braavosi";

        Random rword = new Random();


        int randomNumber = rword.Next(10);

        string asterickWordIntial = words[randomNumber].ToUpper();
        string nonAsterickWord = words[randomNumber].ToUpper();

        string asterickWordFinal = asterickWordIntial.Replace("A", "*");
        asterickWordFinal = asterickWordIntial.Replace("B", "*");
        asterickWordFinal = asterickWordIntial.Replace("C", "*");
        asterickWordFinal = asterickWordIntial.Replace("D", "*");
        asterickWordFinal = asterickWordIntial.Replace("E", "*");
        asterickWordFinal = asterickWordIntial.Replace("F", "*");
        asterickWordFinal = asterickWordIntial.Replace("G", "*");
        asterickWordFinal = asterickWordIntial.Replace("H", "*");
        asterickWordFinal = asterickWordIntial.Replace("I", "*");
        asterickWordFinal = asterickWordIntial.Replace("J", "*");
        asterickWordFinal = asterickWordIntial.Replace("K", "*");
        asterickWordFinal = asterickWordIntial.Replace("L", "*");
        asterickWordFinal = asterickWordIntial.Replace("M", "*");
        asterickWordFinal = asterickWordIntial.Replace("N", "*");
        asterickWordFinal = asterickWordIntial.Replace("O", "*");
        asterickWordFinal = asterickWordIntial.Replace("P", "*");
        asterickWordFinal = asterickWordIntial.Replace("Q", "*");
        asterickWordFinal = asterickWordIntial.Replace("R", "*");
        asterickWordFinal = asterickWordIntial.Replace("S", "*");
        asterickWordFinal = asterickWordIntial.Replace("T", "*");
        asterickWordFinal = asterickWordIntial.Replace("U", "*");
        asterickWordFinal = asterickWordIntial.Replace("V", "*");
        asterickWordFinal = asterickWordIntial.Replace("W", "*");
        asterickWordFinal = asterickWordIntial.Replace("X", "*");
        asterickWordFinal = asterickWordIntial.Replace("Y", "*");
        asterickWordFinal = asterickWordIntial.Replace("Z", "*");

        asterickWordFinal = HangTxtBox;
    }

当我将asterickWordFinal设置为HangTxtBox时,我收到以下消息

"无法将System.Window.Forms.TextBox类型隐式转换为字符串"

但我听说如果你设置了asterickWordFinal.Text = HangTxtBox会正确,但是我收到了这条消息。

"字符串不包含文本的定义接受类型字符串的第一个参数可以找到"

所以,我想知道我是否遗漏了系统中的某些内容,命名空间还是我必须尝试覆盖?感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

你已经倒退了。 =赋值运算符不接受 left 值并将其放在 right 变量中,它采用 right 值并且将它放在 left 变量中。像这样:

HangTxtBox.Text = asterickWordFinal;

这实质上意味着:

  

asterickWordFinal的值并将其放入HangTxtBox.Text

答案 1 :(得分:0)

您是否想要获取文本框的价值?如果是这样的话应该是这个asterickWordFinal = Convert.ToString(HangTxtBox.Text);

答案 2 :(得分:-1)

这是一个副作用,你的星号代码可以简化很多。你所做的只是创建一个字符串,其中包含的字母与你选择的随机字母中的字母一样多。

你可以很容易地这样做:

...

string asterickWordIntial = words[randomNumber].ToUpper();

// create a string with the * character repeated as many times as the
// length of the random word
string asterickWordFinal = new string('*', asterickWordInitial.Length);

HangTxtBox.Text = asterickWordFinal;

请注意,您的代码假设没有单词可以包含非字母字符,这对于hangman来说可能没问题,您只需要确保在生成单词列表时知道。

相关问题