gpt4 book ai didi

.net - 为什么ShowDialog总是返回DialogResult.Cancel?

转载 作者:行者123 更新时间:2023-12-04 13:28:43 32 4
gpt4 key购买 nike

我有一个定制对话框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;

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。

按钮的对话框结果被相应地设置。

我已经在对话框winform上设置了AcceptButton和CancelButton。

我不知道为什么showdialog方法总是返回DialogResult.Cancel。

更新经过一些测试,我发现通过调用showdialog = DialogResult.Ok显示时,其他定制的对话框窗口可以正常工作。因此,我检查了它们两个,以查看它们的属性设置是否存在某些差异,并且绝对没有差异。我不明白
提前致谢,

最佳答案

我发现了我的问题。这就是为什么对话框表单总是返回Cancel DialogResult的原因。对于我的定制对话框窗口,我还实现了Form_Closing事件方法。显然,当使用ShowDialog方法打开对话框时,您不会有一个事件会使程序计数器跳出其步骤。因此,它在有机会读取其DialogResult之前已经关闭。因此,我的程序仅看到对话框窗口的默认DialogResult。

一旦删除了Form_Closing事件方法,它就会按预期的方式工作。

我没有删除问题,而是在回答它,我认为它会帮助其他人。

关于.net - 为什么ShowDialog总是返回DialogResult.Cancel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7971649/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com