我有一个自定义的对话框Winform。上面有一个标签、文本框和2个按钮(确定和取消)。它还声明并定义了重载的执行方法,以便传递不同的参数列表。
对话框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。
按钮的dialogresult已相应设置。
我在对话框winform上设置了AcceptButton和CancelButton。
我无法弄清楚为什么showdialog方法总是返回DialogResult.Cancel。
更新经过一些测试,我发现我的其他自定义对话框窗口通过调用showdialog = DialogResult.Ok显示时工作正常。因此,我检查了它们两个,看看它们的属性设置是否有所不同,但实际上没有任何区别。我不理解它。