naw*_*fal 6 c# modal-dialog dialogresult winforms
我有一个表单Form1
,我将其显示Form2
为模态表单.从Form2
我做各种编辑和删除不同的值集合,应该Form1
在关闭后反映出来Form2
.所以我做的就是RePopulateControls_in_Form1()
关闭之后Form2
.由于RePopulateControls_in_Form1()
是一个漫长的过程,我只想在发生一些修改(编辑,添加,删除)Form2
而不是Form2
刚刚打开和关闭时执行该方法.
所以这就是我尝试做的事情Form1
:
Form2 f = new Form2();
if (f.ShowDialog(this) == DialogResult.Something)
RePopulateControls_in_Form1()
Run Code Online (Sandbox Code Playgroud)
然后在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;
}
Run Code Online (Sandbox Code Playgroud)
但我的问题是.Something
.如果它不是.None
,Form2
只需关闭.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;
}
Run Code Online (Sandbox Code Playgroud)
RePopulateControls_in_Form1()
不打!
简而言之,在我的程序中,RePopulateControls_in_Form1()
如果只修改值,我怎么能告诉编译器调用Form2
?
注意:肯定需要重新填充,因为控件是动态创建的并且有点复杂(实际上创建的Form2
是GUI控件及其标签等).
Rya*_*ell 11
在Form上设置DialogResult会隐藏表单并从ShowDialog返回.如果要延迟该操作直到用户执行其他操作(例如关闭表单),则应将该状态存储为成员字段,并在Form.Closing的处理程序中设置DialogResult.
此外,如果您确实要在按下按钮时关闭模式窗体,则可以使用Button.DialogResult属性而不是制作Button.Click处理程序.
归档时间: |
|
查看次数: |
9539 次 |
最近记录: |