C#winform文本框如何在第二次单击按钮时变为空?
在一个窗体中,我有一个包含4个选项卡的选项卡控件的组框 在第二个选项卡中,我有一些文本框,在保存数据之前,我需要验证在这些文本框中输入的输入。请注意,我的保存按钮位于最后一个选项卡中 以下测试场景有效:C#winform文本框如何在第二次单击按钮时变为空?,c#,winforms,.net-3.5,c#-2.0,C#,Winforms,.net 3.5,C# 2.0,在一个窗体中,我有一个包含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=“”
。这很难看。