解析和消息框通知时,文本框为空值

时间:2014-02-23 03:28:33

标签: c#

我已经制作了一个在填写字段时工作完全正常的表单。如果单击带有空白文本框的“转换”按钮,则会因解析空值而抛出错误。

显然这意味着我在点击按钮时声明了我的变量。

如果字段为空,我还希望弹出一个消息框,提示用户输入数据。

以下是转换按钮的代码:

private void exitButton_Click(object sender, EventArgs e)
    {
        //closes the form
        this.Close();
    }

private void convertButton_Click(object sender, EventArgs e)
    {
        decimal measurementDecimal = decimal.Parse(enterTextBox.Text);          
        //if else arguments for radio buttons
        if (string.IsNullOrWhiteSpace(enterTextBox.Text))
        {
            MessageBox.Show("Please enter a value");
        }             

        else if (inchesFromRadioButton.Checked && (inchesToRadioButton.Checked))
        {
            convertedTextBox.Text = measurementDecimal.ToString();
        }
        else if (inchesFromRadioButton.Checked && (feetToRadioButton.Checked))
        {
            convertedTextBox.Text = (measurementDecimal / 12).ToString();
        }
        else if (inchesFromRadioButton.Checked && (yardsToRadioButton.Checked))
        {
            convertedTextBox.Text = (measurementDecimal / 36).ToString();
        }
        else if (feetFromRadioButton.Checked && (inchesToRadioButton.Checked))
        {
            convertedTextBox.Text = (measurementDecimal * 12).ToString();
        }
        else if (feetFromRadioButton.Checked && (feetToRadioButton.Checked))
        {
            convertedTextBox.Text = measurementDecimal.ToString();
        }
        else if (feetFromRadioButton.Checked && (yardsToRadioButton.Checked))
        {
            convertedTextBox.Text = (measurementDecimal / 3).ToString();
        }
        else if (yardsFromRadioButton.Checked && (inchesToRadioButton.Checked))
        {
            convertedTextBox.Text = (measurementDecimal * 36).ToString();
        }
        else if (yardsFromRadioButton.Checked && (feetToRadioButton.Checked))
        {
            convertedTextBox.Text = (measurementDecimal * 3).ToString();
        }
        else if (yardsFromRadioButton.Checked && (yardsToRadioButton.Checked))
        {
            convertedTextBox.Text = measurementDecimal.ToString();
        }
        else
        { 
            MessageBox.Show("Parameters not set.  Please select a 'From' and 'To'"); 
        }

1 个答案:

答案 0 :(得分:2)

解决方案1:您可以在解析输入值之前执行null或空检查。如果它是无效的显示警告并且方法中有return

试试这个:

private void convertButton_Click(object sender, EventArgs e)
{
   //if else arguments for radio buttons
    if (string.IsNullOrWhiteSpace(enterTextBox.Text))
    {
        MessageBox.Show("Please enter a value");
        return;
    }       

     /*Your remaining code here*/
    decimal measurementDecimal = decimal.Parse(enterTextBox.Text);    

解决方案2:您可以使用decimal.TryParse()方法检查有效的十进制值。

来自MSDN:

  

将数字的字符串表示形式转换为Decimal   当量。返回值表示转换是否成功   或者失败。

private void convertButton_Click(object sender, EventArgs e)
{

    decimal measurementDecimal ;

    if (!decimal.TryParse(enterTextBox.Text,out measurementDecimal))
    {
        MessageBox.Show("Please enter a valid value");
        return;
    } 
   else
   {

     /*Your remaining code here*/

   }