gpt4 book ai didi

c# - 不关闭表单的 DialogResult?

转载 作者:太空狗 更新时间:2023-10-29 21:02:46 28 4
gpt4 key购买 nike

我有一个表单 Form1,我从中将 Form2 显示为模态表单。在 Form2 中,我对不同的值集进行了各种编辑和删除,这些值应该在关闭 Form2 后反射(reflect)在 Form1 中。所以我所做的是在关闭 Form2 之后 RePopulateControls_in_Form1()。由于 RePopulateControls_in_Form1() 是一个漫长的过程,我只想在 Form2 而不是 Form2 中发生某些修改(编辑、添加、删除)时执行该方法 只是打开和关闭。

这就是我在 Form1 中尝试做的事情:

        Form2 f = new Form2();
if (f.ShowDialog(this) == DialogResult.Something)
RePopulateControls_in_Form1()

然后在 Form2 中我做,

    private void bntEdit()
{
//If Edit?
this.DialogResult = DialogResult.Something;
}
private void bntAdd()
{
//If Add?
this.DialogResult = DialogResult.Something;
}
private void bntDelete()
{
//If Delete?
this.DialogResult = DialogResult.Something;
}

但我的问题是.Something。如果不是 .NoneForm2 就会关闭。我不希望 Form2 自行关闭,除非用户关闭它。

如果我这样做:

    //in Form1
private void Form1_Click()
{
Form2 f = new Form2();
if (f.ShowDialog(this) == DialogResult.None)
RePopulateControls_in_Form1()
}

//in Form2
private void Form2_SomeModification()
{
//If Modified?
this.DialogResult = DialogResult.None;
}

RePopulateControls_in_Form1() 未命中!

简而言之,在我的程序中,如何告诉编译器仅当 Form2 中的值被修改时才调用 RePopulateControls_in_Form1()

注意:由于控件是动态创建的并且有点复杂(实际上在 Form2 中创建的是 GUI 控件及其标签等),因此肯定需要重新填充。

最佳答案

在 Form 上设置 DialogResult 会隐藏表单并从 ShowDialog 返回。如果您想延迟到用户执行某些其他操作(例如关闭表单),您应该将该状态存储为成员字段并在 Form.Closing 的处理程序中设置 DialogResult。

此外,如果您确实想在按下按钮时关闭模态表单,您可以使用 Button.DialogResult 属性而不是制作 Button.Click 处理程序。

关于c# - 不关闭表单的 DialogResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881321/

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