我在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
{
}
}
}
对话框结果会不断向父窗体返回“确定”答案。
我需要停止事件的执行,并且在用户更正窗体上的信息之前不返回任何答案。换句话说,用户应该返回窗体以更正任何丢失或错误的数据。
4条答案
按热度按时间kxe2p93d1#
正如Hans Passant在评论中提到的,只需将DialogResult设置为None!
就像这样:
6yt4nkrj2#
我个人不会在这种情况下在按钮上使用
DialogResult
,我只倾向于在只有不需要任何额外逻辑的不同选项时设置DialogResult
(例如,创建一个自定义MessageBox)。我所要做的就是在成功时自己发送
DialogResult
:ohfgkhjo3#
考虑利用Forms的
Closing
事件,并使用事件参数的Cancel
属性取消窗体关闭。这是一个讨论这个想法的网页它是VB的,但你会明白
http://www.vbinfozine.com/t_wfdlg.shtml
erhoui1w4#
如果您已在子窗体(对话框)中的按钮上使用了DialogResult,并希望返回到没有对话框结果的窗体,请在form_closing()事件上使用函数: