.net – 为什么ShowDialog总是返回DialogResult.Cancel?
发布时间:2020-12-15 04:11:09 所属栏目:大数据 来源:网络整理
导读:我有一个自定义对话框winform.在它上面我有一个标签,文本框和2个按钮(确定和取消).它还声明并定义了用于传递不同参数列表的重载执行方法. Dialog Winform的调用方式如下: var theDialog := new InputMsgBox;if theInputB.Execute('Awesome StackOverflow','
我有一个自定义对话框winform.在它上面我有一个标签,文本框和2个按钮(确定和取消).它还声明并定义了用于传递不同参数列表的重载执行方法.
Dialog Winform的调用方式如下: var theDialog := new InputMsgBox; if theInputB.Execute('Awesome StackOverflow','Enter Text?',s,var s) = DialogResult.OK then begin Invalidate; SetText(s); end; Dialog Winform执行定义如下: method InputMsgBox.Execute(Title,theMessage,defaultanswer:string;var thevalue:string): DialogResult; begin result := DialogResult.Cancel; Requesttext.Text:=themessage; Requesttext.Enabled:=true; Requesttext.Visible:=true; InputTextBox.Text:=defaultanswer; InputTextBox.Enabled:=true; InputTextBox.Visible:=true; CancelBtn.Enabled:=true; CancelBtn.Visible:=true; Okbtn.Enabled:=true; Okbtn.Visible:=true; self.ShowDialog; Result := self.DialogResult; thevalue:=InputTextBox.Text; end; 当execute方法返回给调用者时,即使单击OKBtn,它也总是返回DialogResult.Cancel. 按钮的对话框相应地设置. 我在Dialog winform上设置了AcceptButton和CancelButton. 我无法弄清楚为什么showdialog方法总是返回DialogResult.Cancel. 更新完成一些测试后,我发现通过调用showdialog = DialogResult.Ok显示我的其他自定义对话框窗口工作正常.所以,我检查了它们两个以查看它们的属性设置是否存在一些差异,并且绝对没有区别.我不明白. 解决方法
我想出了我的问题.这就是Dialog Form始终返回Cancel DialogResult的原因.对于我自定义的对话窗口,我还实现了Form_Closing事件方法.显然,当使用ShowDialog方法打开对话框时,您不会有一个会使程序计数器跳出其步骤的事件.因此,在它有机会阅读其DialogResult之前,它已经关闭.因此,我的程序只看到对话窗口的默认DialogResult.
一旦我删除了Form_Closing事件方法,它就按照预期的方式工作. 我没有删除问题,而是回答它,我觉得它会帮助别人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |