lid*_*min 6 validation winforms
我在Windows窗体上遇到以下方案的问题:
我创建了一个带有两个按钮的表单,每个按钮都分配了行为DialogResult OK和DialogResult Cancel.但基于某些条件,我需要停止执行OK按钮,问题是如果我只是这样做了一个返回:
private void btnOk_Click(object sender, EventArgs e)
{
foreach(Control control in tblTable.Controls)
{
if (control.GetType() == typeof(TextBox))
{
if (control.Text.Trim() == "")
{
control.Focus(); return;
}
}
else
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
对话框结果一直向父表单返回OK答案,我需要停止执行该事件,并且在用户更正表单上的信息之前不要返回任何答案.
谢谢你的帮助.
正如Hans Passant在评论中提到的那样,只需将DialogResult设置为None即可!
像这样:
private void btnOk_Click(object sender, EventArgs e)
{
if(ValidationFailed())
{
this.DialogResult = DialogResult.None;
return;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
我个人DialogResult在这种情况下不会使用s on按钮。我只倾向于在DialogResult只有独特的选项不需要任何其他逻辑(即制作自定义MessageBox)时设置。
我要做的就是让DialogResult自己成功:
private void btnOk_Click(object sender, EventArgs e)
{
if (allIsOK())
{
this.DialogResult = DialogResult.OK;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2854 次 |
| 最近记录: |