C# 文本框只接受int

C# 文本框只接受int,c#,winforms,textbox,C#,Winforms,Textbox,我的文本框有问题。我希望可以通过两个文本框在GUI中手动设置图表的x轴和y轴间隔。这是可行的,但当我在中键入字符或在中键入int并删除它时,程序立即崩溃,我得到System.FormatException(没有单击按钮接受更改)。我怎样才能解决一个人只需输入不同的符号而不会立即使程序崩溃的问题呢?我的代码如下: public void textBox2_TextChanged(object sender, EventArgs e) { x_axis_num = Convert.ToIn

我的文本框有问题。我希望可以通过两个文本框在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;

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

你认为“嘿,我不是数字!”的转换会怎么样?它将可怕地崩溃,基本上是因为该文本不是,也永远不会是一个数字

相反,您可以使用该方法,该方法将获取任何文本并尝试将其转换为数字

如果转换成功,则没有问题。如果未成功,则在标志上会出现一个
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;    
}

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

你认为“嘿,我不是数字!”的转换会怎么样?它将可怕地崩溃,基本上是因为该文本不是,也永远不会是一个数字

相反,您可以使用该方法,该方法将获取任何文本并尝试将其转换为数字

如果转换成功,则没有问题。如果未成功,则在标志上会出现一个
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;    
}

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

你认为“嘿,我不是数字!”的转换会怎么样?它将可怕地崩溃,基本上是因为该文本不是,也永远不会是一个数字

相反,您可以使用该方法,该方法将获取任何文本并尝试将其转换为数字

如果转换成功,则没有问题。如果未成功,则在标志上会出现一个
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;    
}

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

你认为“嘿,我不是数字!”的转换会怎么样?它将可怕地崩溃,基本上是因为该文本不是,也永远不会是一个数字

相反,您可以使用该方法,该方法将获取任何文本并尝试将其转换为数字

如果转换成功,则没有问题。如果未成功,则在标志上会出现一个
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;    
}

显示指定图表间隔的事件的可能重复项@Shaharyar链接将帮助您处理角色部分,但由于您也关心Backspace,因此您必须验证在分配事件上是否是我单击按钮绘制图形时发生的事件。因此,当我更改轴间隔并单击按钮时,它工作正常。如何验证?@uzi42tmp的问题是,您输入的不是
int
,而是通过一个未经处理的
FormatException
,这意味着它无法将该值解析为
int
。您说程序在键入字符后立即崩溃,所以我认为事件一直在运行。那么shaharyar是对的,你可以在他的链接中得到你的答案。显示什么事件分配图表间隔的可能重复@Shaharyar链接将帮助您处理角色部分,但由于您也关心Backspace,因此您必须验证在分配事件上是否是我单击按钮绘制图形时发生的事件。因此,当我更改轴间隔并单击按钮时,它工作正常。如何验证?@uzi42tmp的问题是,您输入的不是
int
,而是通过一个未经处理的
FormatException
,这意味着它无法将该值解析为
int
。您说程序在键入字符后立即崩溃,所以我认为事件一直在运行。那么shaharyar是对的,你可以在他的链接中得到你的答案。显示什么事件分配图表间隔的可能重复@Shaharyar链接将帮助您处理角色部分,但由于您也关心Backspace,因此您必须验证在分配事件上是否是我单击按钮绘制图形时发生的事件。因此,当我更改轴间隔并单击按钮时,它工作正常。如何验证?@uzi42tmp的问题是,您输入的不是
int
,而是通过一个未经处理的
FormatException
,这意味着它无法将该值解析为
int
。您说程序在键入字符后立即崩溃,所以我认为事件一直在运行。那么shaharyar是对的,你可以在他的链接中得到你的答案。显示什么事件分配图表间隔的可能重复@Shaharyar链接将在角色部分帮助您,但由于您也关心退格,因此您必须在分配事件时验证这一点