将int转换为文本框文本?

时间:2014-01-20 23:45:37

标签: c# winforms debugging compiler-errors

我在c#中有这段代码:

int i;
i += textBox1.Text;
textBox1.Text = i;

但它给了我最后两个代码的错误。我如何解决它?我做错了什么?

为什么这个问题会减少投票?这是一个非常好的问题。 :'(

6 个答案:

答案 0 :(得分:4)

试试这个:

i+= Convert.ToInt32(textBox1.Text);

textBox1.Text = i.ToString();

Convert课程中还有其他功能,例如ToInt64ToDouble等。如果您不确定文本框,也可以使用TryParse包含数字:

var x = 0;
if(int.TryParse(textbox1.Text, out x))
{
    i+=x;
}

答案 1 :(得分:3)

您正在尝试制作StringInt您必须Convert StringInt

将此代码放入:

i = Convert.ToInt32(textBox1.Text);
textBox1.Text = i.ToString();

你也可以Parse,然后TryParse

如果你想为int之外的东西做这件事,你可以改成你想要的任何东西。例如:

Convert.ToDouble

将其转换为Double,而不是Int

答案 2 :(得分:2)

如果您尝试将+=与未初始化的变量一起使用,则会出现编译错误:

  

在访问之前,变量 i 可能不会初始化

首先,您需要初始化变量,只需在定义时将其指定为 0

int i = 0;

然后你试图将一个字符串添加到一个整数.C#是一种强类型语言。因此你不能直接将一个整数分配给一个字符串。要先执行此操作,你应该将你的字符串转换为整数,然后追加到你的实际变量:

int i += Convert.ToInt32(textBox1.Text);

第三行,您尝试为字符串分配一个整数。要执行此操作,您应该将整数变量转换为字符串。您可以使用.ToString方法或Convert.ToString

textBox1.Text = i.ToString();

答案 3 :(得分:2)

您的示例代码

int i;
i += textBox1.Text;
textBox1.Text = i;

有一些问题。

首先,由于类型不匹配,您将收到编译器错误(实际上是两个)。 iint; textBox。文本is a string. There is no implicit cast or conversion from字符串to int`,因此编译器会抛出错误。

其次,修复了上述问题后,由于i未初始化,您将收到另一个编译器错误。 C#规范要求变量在首次使用之前显式赋值。 i += j;之类的内容是i = i + j;的简写。由于您尚未为i分配值,编译器会抛出错误。

您可能会注意到您看到的编译器错误

error CS0030: Cannot convert type 'string' to 'int'
error CS0029: Cannot implicitly convert type 'string' to 'int'

error CS0165: Use of unassigned local variable 'i'

是对问题的描述。在阅读编译器错误消息时,解决方案应该是相当明显的。你想做的是:

int value ;
bool parsed = int.TryParse(textBox1.Text,out value ) ;

if ( !parsed ) throw new InvalidOperationException( "you should have client-side validators on textBox1") ;

i += value ;

答案 4 :(得分:1)

除非您解析它并且成功,否则无法将字符串添加到int。您可能还希望在将.ToString()分配给文本框的文本时致电i。顺便说一下,请考虑使用int.TryParse(),或者至少处理无效输入。

答案 5 :(得分:1)

你也可以尝试这个;

int xout;
if(int.TryParse(textbox1.Text, out xout)){
 i += xout;
 textbox1.Text = i.ToString();
}

Convert.ToInt32和int.TryParse之间的区别: 如果textbox没有整数字符串Convert.ToInt32 throw和exception但int.TryPary不会