2016-03-15 90 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(); 

裝上去的函數參數或設置一些標誌,這樣就可以識別該事件是否是由用戶輸入或您清除文本調用。 只需檢查用戶按下退格鍵時調用此功能的次數。你會明白這個主意。