2009-05-20 240 views
3

我需要我的代码帮助。我想在我的文本框中只写数字/整数,并希望在我的列表框中显示。将字符串转换为整数

下面是我的代码的顺序吗?这似乎给出了一个错误。

int yourInteger; 
    string newItem; 

    newItem = textBox1.Text.Trim(); 

    if (newItem == Convert.ToInt32(textBox1.Text)) 
    { 
     listBox1.Items.Add(newItem); 
    } 

==== 更新:

这是我的代码看起来像现在。我的问题是,listBox可以处理数据类型“long”吗?因为当我输入20,000,000的数字时,我只用了20分钟的一小时玻璃杯。但是当我用控制台尝试这个时,我得到了答案。所以我不确定哪种元素可以处理数据类型“long”。

string newItem; 
    newItem = textBox1.Text.Trim(); 

    Int64 num = 0; 
    if(Int64.TryParse(textBox1.Text, out num)) 
    { 
     for (long i = 2; i <= num; i++) 
     { 
      //Controls if i is prime or not 
      if ((i % 2 != 0) || (i == 2)) 
      { 
       listBox1.Items.Add(i.ToString()); 
      } 

     } 
    } 


    private void btnClear_Click(object sender, EventArgs e) 
    { 
     listBox1.Items.Clear(); 
    } 

回答

3

使用此:

int yourInteger; 
    string newItem; 

    newItem = textBox1.Text.Trim(); 
    Int32 num = 0; 
    if (Int32.TryParse(textBox1.Text, out num)) 
    { 
     listBox1.Items.Add(newItem); 
    } 
    else 
    { 
     customValidator.IsValid = false; 
     customValidator.Text = "You have not specified a correct number"; 
    } 

这里假设你有一个的CustomValidator。

14
int result = int.Parse(textBox1.Text.Trim()); 

如果你想检查有效期:

int result; 
if (int.TryParse(textBox1.Text.Trim(), out result)) // it's valid integer... 
    // int is stored in `result` variable. 
else 
    // not a valid integer 
+0

喜迈赫达德,我不知道如何做到这一点我码。也许你可以帮助我。谢谢 – tintincutes 2009-05-23 16:26:33

+0

这不是一个长期的问题。你正在做一个非常耗时和耗费内存的操作。写入控制台不需要用很多元素更新GUI对象。基本上,你在一个没有任何实际用途的列表框中显示数百万个元素(谁可以在这么长的列表中滚动?)并消耗大量资源。 – 2009-05-23 18:05:44

+0

嗨Mehrdad这只是一个学习的测试程序。感谢您的建议 – tintincutes 2009-05-24 20:17:23

1

使用int.TryParse()检查是否字符串包含整数值。

-1

你在检查一个空字符串吗?

int yourInteger; 
string newItem; 
newItem = textBox1.Text.Trim(); 

if(newItem != string.Empty) 
{ 
    if (newItem == Convert.ToInt32(textBox1.Text)) 
    { 
     listBox1.Items.Add(newItem); 
    } 
} 
0

textBox1.Text可能不包含整数的有效字符串表示形式(或者只是一个空字符串)。要解决该问题,请使用Int32.TryParse()

0

你可以这样做:

Convert.ToInt32(input); 

对于较长的功能使用这个你可以看看: http://msdn.microsoft.com/en-us/library/bb397679.aspx

基本上,它会检查,如果字符串为null,则它会调用int.Parse。这也可以在WindowsCE下工作,它没有int.TryParse。

0

要具体说明为什么你的代码编译失败,是因为你正在比较一个字符串(newItem)和Convert.ToInt32的结果,这是一个整数,它不会让你这样做。 Convert.ToInt32也会引发一个异常,它传入的字符串不是数字。

您可以尝试使用int.TryParse,或者写一个简单的正则表达式来验证您的输入:

int i; 
bool isInteger = int.TryParse(textBox1.Text,out i); 

bool isInteger = System.Text.RegularExpressions.Regex.IsMatch("^\d+$", textBox1.Text);