2016-03-15 95 views
0

我正在用C#表单制作一个简单的hang子手风格的游戏。我把它设置为textBox1_TextChanged。除了每次用户退回他们的猜测信件,它都会占用空间。在消息指出正确/错误消除了空间后,我怎么能这样做。我讨厌它告诉用户他们在退格后做出了错误的猜测。这是我在这个论坛上的第一篇文章,所以很抱歉,如果代码文本是奇怪的。我只是想让程序在猜出后清除文本框中的文本。清除一个c#表单文本框

更新:添加了建议的信息。现在它做它应该做的一切。除了它弹出一个窗口说“在目标词中找到”。如果guessLetter == null ||会发生这种情况guessLetter ==正确|| guessLetter == false。

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     string guessLetter = textBox1.Text; 
     //textBox1.ReadOnly = true; 


     if (targetWord == null) 
     { 
      MessageBox.Show("Please start a new game."); 
      textBox1.Text = (""); 

     } 

     else 
     { 
      if (targetWord.Contains(guessLetter)) 
      { 


       MessageBox.Show(guessLetter + " was found in the word"); 
      } 

      else 
      { 
       MessageBox.Show(guessLetter + " was not found in the word"); 
       incorrectGuessCtr++; 
       textBox3.Text = incorrectGuessCtr.ToString(); 
      } 
      textBox1.Text = (""); 
     } 
    } 
+0

基础知识。 textBox1.Text = String.Empty; – icbytes

+1

有点好奇,但如果他们键入多个字母,它是如何工作的? – Jacobr365

+0

[如何清除C#中的TextBox中的所有数据/字符串]可能的重复(http://stackoverflow.com/questions/6479049/how-to-clear-all-data-string-in-a-textbox-in -c-sharp) – SeM

回答

1

不要只检查是否targetWord是空的,但也guessLetter。你最好使用string.IsNullOrEmpty过,因为它还会检查字符串为空:

if (!string.IsNullOrEmpty(targetWord) && !string.IsNullOrEmpty(guessLetter)) 
{ 
    ... 
} 

我想你也应该检查是否恰好有一个字母输入。这将意味着这个额外的检查:

if (guessLetter.Length == 1) 
{ 
    ... 
} 
+0

您解决了我遇到的问题,现在我将修复下一个问题。我也更新了我的代码。 –

0

编写代码时,在文本框改变Text属性,您将进入本次活动。我的意思是这个。

textBox3.Text = incorrectGuessCtr.ToString(); 

装上去的函数参数或设置一些标志,这样就可以识别该事件是否是由用户输入或您清除文本调用。 只需检查用户按下退格键时调用此功能的次数。你会明白这个主意。