2013-11-02 63 views
-3

所以我有一個簡單的表單,用戶可以輸入一個double值。在C中使用windows窗體的非數字文本框的異常處理#

enter image description here

這是我的形式應該是什麼樣子。

然而,如果用戶有意或無意地進入非數值它將給我一個錯誤:

Input String was not correct format 

我聽說了一個辦法做到這一點,這就是所謂的異常處理。我如何製作自己的錯誤消息,以便程序不會崩潰?

+0

關於閱讀一些文檔如何? http://msdn.microsoft.com/en-us/library/ms173160.aspx –

+0

我假設你正在使用許多'Parse'方法之一將字符串轉換爲數字。而是使用'TryParse'。如果它不能轉換它,它不會崩潰。 –

+1

Egad。雖然你可能正在學習異常處理,但是一旦你這樣做了,請不要以這種方式使用它。通常情況下,不要使用異常和消息框來響應用戶輸入,而是可以限制輸入並呈現非中斷消息。例如,您可以處理TextBox事件以忽略非數字鍵,並且如果需要,按下非數字鍵時可以顯示警告消息。在這個早期階段,這樣的考慮可能爲時過早,但在您瞭解UI開發的過程中,請記住它們。祝你好運! – Rethunk

回答

1

,如果你想使用異常,您可以使用下面的代碼:

try 
{ 
    Double d = Double.Parse(textBox1.Text); 
} 
catch (FormatException) 
{ 
    MessageBox.Show("Your custom message"); 
} 
+0

我的程序會平穩運行而不會崩潰,但變量「ex」永遠不會被使用?這是爲了什麼? – puretppc

+0

哦,所以catch()方法必須接受一個參數,因此創建一個新的變量?之後這個變量做了什麼?我也想讓我的計劃高效。 – puretppc

+2

@Mike不需要像Szymon所說的那樣聲明一個變量。只要嘗試'catch(FormatException)' –

5

使用double.TryParse()...

private void button1_Click(object sender, EventArgs e) 
    { 
     double dbl; 
     if (double.TryParse(textBox1.Text, out dbl)) 
     { 
      // ... do something with "dbl" in here ... 

     } 
     else 
     { 
      MessageBox.Show(textBox1.Text, "Please enter a valid double!"); 
     } 
    } 
+0

好吧,它的工作,但由於某種原因,如果我按了輸入按鈕錯誤的答案,它會繼續作爲一個零值。我的程序的目的是讓用戶輸入10個值。但即使用戶只是按下輸入鍵,它仍然會算作一個計數。我如何解決這個問題? – puretppc

+0

這將更關聯於您將值轉換爲雙倍值後的值。我們無法看到該代碼。我會特別提出另一個問題,並顯示您的更新代碼。 –

相關問題