TextBox只接受int

时间:2014-11-05 06:48:11

标签: c# winforms textbox

我的文本框有问题。我希望可以通过两个文本框手动设置GUI中图表的x轴和y轴的间隔。这是有效的,但当我输入一个字符或当我输入一个int并删除它时,程序立即崩溃,我得到一个System.FormatException(没有单击按钮接受更改)。如何才能解决这个问题,即只需键入不同的符号而不立即崩溃程序?我的代码如下:

public void textBox2_TextChanged(object sender, EventArgs e)
{
     x_axis_num = Convert.ToInt32(xAxisBox.Text, usC);
}

private void yAxisBox_TextChanged(object sender, EventArgs e)
{
    y_axis_num = Convert.ToInt32(yAxisBox.Text);
} 

这会传递给另一个事件:

chart1.ChartAreas[0].AxisX.Interval = x_axis_num;
chart1.ChartAreas[0].AxisY.Interval = y_axis_num;

1 个答案:

答案 0 :(得分:3)

在第x_axis_num = Convert.ToInt32(xAxisBox.Text, usC);行中,您将获取文本框中的任何内容并尝试将其转换为整数值。

你认为"嘿,我不是一个数字的转换是什么!"会做?它会崩溃,主要是因为该文本不是,也绝不会是一个数字。

相反,您可以使用Int.TryParse方法将任意文本和TRY转换为数字。

如果转换成功,那么没问题。如果不成功,则会在标志上显示false值,表示文本无法转换。

示例:

int number;

bool result = Int32.TryParse(YourTextBox.Text, out number);

如果转换成功,则number具有该值,否则结果为false,因此请执行以下操作:

if(result)
{
    xAxisBox.Text = number.ToString();
    x_axis_num = number;
}
else
{
    xAxisBox.Text = string.Empty;

    // Be careful here with what you set. 
    // This is the value you will set when the Text box has a non numeric value!
    x_axis_num = 0;    
}