2010-09-20 86 views
1

如果文本框有1位數字或大於31的數字,程序將崩潰。我應該如何阻止?c#程序問題

到目前爲止,我有這樣的代碼:

if (dd.Text.Length <= 1 || dd.Text > 31) 
    return; 

顯然,這是錯誤的... :(

+1

你到底在做什麼?你是在分析一個月的哪一天?在這種情況下,你不能檢查31,因爲不是所有的月份都有31天。同樣比較一個字符串(我猜文本是一個字符串)的數字31不會像你期望的那樣工作。 – 2010-09-20 13:33:29

+1

什麼是使用您的文本框的代碼?你在if語句的第二部分中缺少一個「.Length」。 – 2010-09-20 13:33:30

回答

6
dd.Text > 31 

上面的代碼將一個字符串與一個int進行比較。你應該嘗試:

int val = 0; 
if (Int32.TryParse(dd.Text, out val)) 
{ 
    if (val > 31) return; 
} 
+0

順便說一句,你不能初始化'val'到'0' - 它會通過輸出接受方法 – abatishchev 2010-09-20 13:45:51

3
dd.Text > 31 

此行不會工作嘗試:

int.parse(dd.Text) > 31 

而且如果輸入的是非數字字符,它將不會運行,您可能需要先進行消毒。

-1

什麼是顯而易見的,你不會想到你在做什麼。

首先,您必須瞭解C#中可用的基本類型以及它們的重要性。

現在你應該閱讀關於字符串和整數。你會明白爲什麼代碼不起作用。

如果您想驗證一個文本框是否在兩個數字之間,首先它需要是數字。所以你需要把它...

然後你可以對它進行操作和比較。

String myText = textBox.Text; 
int myValue = -1; 

if(Int32.tryPart(myText,myValue))  
if(myValue > 31) 
    return; 
+0

自動完成。你爲什麼用首字母順序寫出單詞You中的第一個字母?你不知道現在是怎麼做的? :P – Younes 2010-09-20 13:59:02

+0

我的母語拼寫規則的習慣。 – 2010-09-20 14:03:04