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

发布于 2024-10-13 06:53:44 字数 1919 浏览 3 评论 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);

        }





    }

In a form I have group Box which contains tab control with 4 tabs.

In the second tab I have some textboxes and before saving data I need to validate input entered in these textbxes. Please note my save button is in last tab.

The following test scenario works:

  • Invalid input in first textbox
  • Invalid input in second textbox
  • Click button

However, in the following test scenario an "Object refrence not set to an instance of a object" exception is thrown:

  • Invalid input in first textbox
  • Click button
  • Invalid input in second textbox
  • click button

I have placed break point and it shows that particular textbox is null. It happens with every textbox where I break order.

Please guide me where I am incorrect and how I can fix it.

Below is my code that I am running on button press.

 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);

        }





    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等往事风中吹 2024-10-20 06:53:44

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

txtUnitPrice = null;

可以说这是一种预感,但这些效果会更好吗?

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

Are you sure you mean to set the textbox itself to null not the .Text or other member?

txtUnitPrice = null;

Call it a hunch, but will these work better?

            txtUnitPrice.Text = null;
....
            txtProfitRatio.Text = null;
美人骨 2024-10-20 06:53:44

出现此问题的原因是您将文本框设置为 NULL 值。

else
{
    txtUnitPrice = null;
}

您应该将 Text 属性设置为 String.Empty,如下所示:

else
{
    txtUnitPrice.Text = String.Empty;
}

The problem occurs because you are setting your Textboxes to NULL-value.

else
{
    txtUnitPrice = null;
}

you should instead set the Text property to String.Empty like so:

else
{
    txtUnitPrice.Text = String.Empty;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文