尝试将字符串转换为Int16时出现FormatException

时间:2017-06-07 14:34:27

标签: c# winforms

该程序应该从textbox1.Text获取一个正数并将其发送到构造函数HR表单以将其用作数组大小(使用try catch处理错误)但是当我运行程序时它给出错误。

//first form(info)
HR frm = new HR(textBox1.Text);
frm.show();
this.close();
//2nd form(HR)
static int size = 0;
public HR(string emplyee_num)
{
    InitializeComponent();
    size = Convert.ToInt16(emplyee_num);//Error appear her instead
}

但是,我尝试发送字符串然后将其转换为HR格式而不是发送它,如图所示,它在转换行中给出了错误。

Error in original code

如何修复该错误以及抛出该错误的原因是什么?

1 个答案:

答案 0 :(得分:1)

抛出FormatException,因为输入控件中的文本不是有效数字。

最好先尝试解析输入,如果输入有效则只创建表单:

Int16 size = 0;
try
{
     size = Convert.ToInt16(textBox1.Text));
}
catch(FormatException)
{
     // Handle exception
}

if(size > 0)
{
     HR frm = new HR(size);
     frm.show();
     this.close();
}
else
{
     // Handle error
}

请记住更新HR构造函数定义:

public HR(Int16 emplyee_num)
{
    InitializeComponent();
    size = emplyee_num;
}