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

标签 c# winforms .net-3.5 c#-2.0

在一个表单中,我有一个 Box 组,其中包含带有 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;

关于C# winform 文本框如何在第二次单击按钮时变为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4780819/

相关文章:

c# - 在 case 语句中使用冒号的 Razor 标记中的字符串切换导致错误 "unterminated string literal"

c# - 在 webbrowser 控件中使用最新版本的 Internet Explorer

c# - 组行上的 DevExpress GridHitInfo

c# - 如何同时更好地控制多个控件的行为?

c# - 如何用两个连续的空格分割一个字符串

c# - 在 WPF 中调用调度程序时出现问题

c# - 调用父窗体函数?

c# - 减少字典中的所有 int 值

.net - 无法在装有 VS2010/.net4 的电脑上运行基于 .net3.5 的 exe?

c# - 如何使用ElasticSearch(C#/NEST)搜索多个索引?