Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#winform文本框如何在第二次单击按钮时变为空?_C#_Winforms_.net 3.5_C# 2.0 - Fatal编程技术网

C#winform文本框如何在第二次单击按钮时变为空?

C#winform文本框如何在第二次单击按钮时变为空?,c#,winforms,.net-3.5,c#-2.0,C#,Winforms,.net 3.5,C# 2.0,在一个窗体中,我有一个包含4个选项卡的选项卡控件的组框 在第二个选项卡中,我有一些文本框,在保存数据之前,我需要验证在这些文本框中输入的输入。请注意,我的保存按钮位于最后一个选项卡中 以下测试场景有效: 第一个文本框中的输入无效 第二个文本框中的输入无效 点击按钮 但是,在以下测试场景中,会引发“对象引用未设置为对象实例”异常: 第一个文本框中的输入无效 点击按钮 第二个文本框中的输入无效 点击按钮 我已经放置了断点,它显示特定的文本框为空。它发生在我破坏秩序的每个文本框中 请指导我哪里

在一个窗体中,我有一个包含4个选项卡的选项卡控件的组框

在第二个选项卡中,我有一些文本框,在保存数据之前,我需要验证在这些文本框中输入的输入。请注意,我的保存按钮位于最后一个选项卡中

以下测试场景有效:

  • 第一个文本框中的输入无效
  • 第二个文本框中的输入无效
  • 点击按钮
但是,在以下测试场景中,会引发“对象引用未设置为对象实例”异常:

  • 第一个文本框中的输入无效
  • 点击按钮
  • 第二个文本框中的输入无效
  • 点击按钮
我已经放置了断点,它显示特定的文本框为空。它发生在我破坏秩序的每个文本框中

请指导我哪里是错误的,以及如何修复它

下面是我的代码,我正在运行的按钮按下

 private void btnOrderSave_Click(object sender, EventArgs e)
    {
        SaveOrder();

    }

    private void SaveOrder()
    {
        try
        {
            decimal? _marketRate, _bankcharges, _portcharges, _handlingcharges, _othercharges, _taxratio, _profitratio;

            if (!String.IsNullOrEmpty(txtUnitPrice.Text))
            {

                if (valCtr.IsDecimal(txtUnitPrice.Text))
                {
                    _marketRate = Convert.ToDecimal(txtUnitPrice.Text);
                }
                else
                {
                    ErrorMessage("Rate is invalid");                        
                    return;
                }
            }
            else
            {
                txtUnitPrice = null;
            }
            if (!String.IsNullOrEmpty(txtProfitRatio.Text))
            {
                if (valCtr.IsDecimal(txtProfitRatio.Text))
                {
                    _marketRate = Convert.ToDecimal(txtProfitRatio.Text);
                }
                else
                {
                    ErrorMessage("Profit ratio is invalid");                        
                    return;
                }
            }
            else
            {
                txtProfitRatio = null;
            }



        }

        catch (Exception ex)
        {
            AlertMessage(ex.InnerException + " :" + ex.Message + " : " + ex.StackTrace + " : " + ex.Source);

        }





    }

您确定要将文本框本身设置为null而不是
.Text
或其他成员吗

txtUnitPrice = null;
可以说这是一种预感,但这些方法会更好吗

            txtUnitPrice.Text = null;
....
            txtProfitRatio.Text = null;

出现此问题的原因是您正在将文本框设置为空值

else
{
    txtUnitPrice = null;
}
您应该改为将Text属性设置为String.Empty,如下所示:

else
{
    txtUnitPrice.Text = String.Empty;
}

p/s-当您将.Text设置为null时,它在内部使用String.Empty。看起来有点短,尽管如此。我更喜欢使用String.Empty,因为通常当我必须重构遗留代码时,我会看到类似
txtBox.Text=“”
。这很难看。