2010-09-20 119 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