我的文本框有问题。我希望可以通过两个文本框手动设置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;
答案 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;
}