2010-01-04 41 views
0

我如何通過顯示一個MSG框告訴用戶他輸入的內容格式不正確 我有文本框,我只想獲取數字,如果用戶輸入的字母而不是要顯示他味精如何避免/警告用戶在Windows應用程序中輸入錯誤

int level; 
     if(range.Text.GetType) 
     { 
      MessageBox.Show("Please Enter Only Number"); 
     } 
     else 
     { 
     level = int.Parse(range.Text); 
     // use the randomGenerator function according to the number i entered. 
     TheRandNo = randomGenerator.Next(level); 
     //Activate the guess button. 
     GuessBT.Enabled = true; 
     label4.Text = x.ToString(); 
     // To start the game with the green color 
     BackColor = Color.Green; 
     } 

thanx提前

回答

1
if(!int.TryParse(range.Text, out level)) 
{ 
    MessageBox.Show("Please Enter Only Number"); 
} 
else 
{ 
    // No need for your Parse now, level has the right value already 
} 
+0

你能告訴我如何使用的TryParse,而沒有經過(出水平),因爲它不在那裏... – Tony 2010-01-04 15:14:41

+0

你不能。 .Net框架的Try *方法(例如TryParse,TryGetValue)的整個想法是返回一個bool,它表示嘗試是否成功。結果以out參數返回。 你有兩個選擇。 a)你想要使用該值(然後像我上面寫的那樣做) b)你只想知道這是否是一個整數。在這種情況下,你可以選擇布魯諾的第一個解決方案,或者 - 定義一個你不使用的局部int,並堅持int.TryParse()。 – 2010-01-04 15:35:24

0

喜歡的東西:

if (!range.Text.All(c => char.IsDigit(c))) 
    MessageBox.Show("Please Enter Only Number"); 

或交替您可以使用int.TryParse

int level; 
if(!int.TryParse(range.Text, out level)) 
{ 
    MessageBox.Show("Please Enter Only Number"); 
} 
else 
{ 
    // ... 
} 

這取決於那種你需要解析數。

+0

爲什麼downvote? – 2010-01-04 14:48:41

+0

你能告訴我如何使用tryParse而不通過(out level),因爲它不在那裏...... – Tony 2010-01-04 15:14:03

4

您可能希望使用MaskedTextBox來代替,它只允許輸入特定字符(在本例中爲數字)。

0

就我個人而言,我會與R. Bemrose的建議一起使用MaskedTextBox;也許我會在它附近放置一個標籤(或者在文本框變爲活動並且有焦點時顯示標籤),告訴用戶只輸入數字。

但是......如果你是「確定」向最終用戶顯示一條消息,讓我建議一個'MessageBox'的替代方案,它對應用程序的流程非常「干擾」,即imho。

考慮到使用MaskedTextBox中您可以訪問樣事件:

private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) 
{ 
    Console.WriteLine("rejected char"); 
} 

private void maskedTextBox1_TextChanged(object sender, EventArgs e) 
{ 
    Console.WriteLine("accepted char"); 
} 

當用戶輸入不符合面具定義的標準字符:在MaskInputRejected事件將火:你能告訴例如,如果發生這種情況,則作爲MessageBox的替代方案。

你甚至可以保持一個計數器變量,在「當前會話」中調用MaskInputRejected事件的次數,並且設置一個「不祥的」MessageBox :)如果用戶輸入了無效字符一定次數。

當輸入一個有效的字符,在你的情況下一個數字,觸發TextChanged事件:然後你可以隱藏標籤。

如果這是一個「遊戲」,您可以使用帶有透明背景的「閃爍閃爍標籤」(使用計時器或其他東西使其閃爍或閃爍)進行操作。

對於任何給定的UI設計,沒有「一刀切」的答案,但我會敦促你,如果你是WinForms .NET的新手及其控件,花一些時間學習和使用MaskedTextBox這是一個非常方便的控件,具有很多功能。

就在你的WPF這裏工作奇數情況下(如果有的話,請即標籤添加到您的問題),請參閱:SO thread on WPF and MaskedTextBox

相關問題