C# winform 如何在按钮第二次单击时文本框变为空?
在一个表单中,我有一个组 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您确定要将文本框本身设置为 null 而不是
.Text
或其他成员吗?可以说这是一种预感,但这些效果会更好吗?
Are you sure you mean to set the textbox itself to null not the
.Text
or other member?Call it a hunch, but will these work better?
出现此问题的原因是您将文本框设置为 NULL 值。
您应该将 Text 属性设置为 String.Empty,如下所示:
The problem occurs because you are setting your Textboxes to NULL-value.
you should instead set the Text property to String.Empty like so: