首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >公共DialogResult ShowDialog()帮助!

公共DialogResult ShowDialog()帮助!
EN

Stack Overflow用户
提问于 2010-04-20 04:33:17
回答 2查看 2.3K关注 0票数 1

我有两个表格。第一种形式是mainForm,它永远不会去任何地方。打开第二个表单(saveForm)时,它将显示在顶部。当我关闭这个表单时,我希望运行mainForm中的某段代码。我想这是让这件事发生的正确方式吧?

当我关闭并返回mainForm时,saveForm上的代码:

代码语言:javascript
复制
private void btnSaveDetails_Click(object sender, EventArgs e)
    {
        Delivery d = new Delivery(txtNameBox.Text, txtAddressBox.Text, txtDayBox.Text, txtTimeBox.Text, txtMealBox.Text, txtInstructionsBox.Text, txtStatusBox.Text);
        mainForm.myDeliveries.Add(d);
        this.Close();
    }

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-20 04:36:08

您必须设置对话框窗体的DialogResult属性。通过显式地在代码中或通过将对话框结果赋值给窗体上的按钮来实现。

代码语言:javascript
复制
private void btnSaveDetails_Click(object sender, EventArgs e)
{
    Delivery d = new Delivery(
        txtNameBox.Text, txtAddressBox.Text, txtDayBox.Text,  
        txtTimeBox.Text, txtMealBox.Text, txtInstructionsBox.Text, 
        txtStatusBox.Text
    );
    mainForm.myDeliveries.Add(d);
    this.DialogResult = DialogResults.OK;
}

如果您使用ShowDialog()调用对话框,则无需调用Close()设置this.DialogResult会为您执行此操作。

在调用表单时,您必须执行以下操作:

代码语言:javascript
复制
var frm = new MyForm();
if (frm.ShowDialog() == DialogResults.OK) {
     // do what you want to do on success.
}
票数 2
EN

Stack Overflow用户

发布于 2010-04-20 04:35:20

您可以使用返回的DialogResult在应用程序中进行一些更改。例如,如果您向用户提供了一个对话框,询问他们是否要删除所有文件,而他们的回答是单击对话框上的Yes按钮,那么您将删除这些文件。

有关如何使用DialogResult和ShowDialog的更多信息可在此处找到:DialogResult

更新:如果您发布的代码来自您的“子”表单,那么到目前为止您所做的可能还不错,但是,您仍然需要在该表单上提供一个DialogResult ,以便向mainForm传达已经完成了某些操作。例如,可以在this.Close()之前执行以下操作:

代码语言:javascript
复制
this.DialogResult = DialogResult.OK;

然后,在调用childForm.ShowDialog()之后的代码中,检查DialogResult。如果它等于DialogResult.OK,那么您可以执行任何您需要执行的任务,这表明用户单击了OK。

(另外,在使用ShowDialog()时不会调用Dispose();如有必要,您需要自己清理。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2670646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档