我有一个表单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()
然后在 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
。如果它不是.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;
}
RePopulateControls_in_Form1()
没有被击中!
简而言之,在我的程序中,我如何告诉编译器RePopulateControls_in_Form1()
仅在值被修改时才调用Form2
?
注意:肯定需要重新填充,因为控件是动态创建的并且有点复杂(实际上创建的Form2
是 GUI 控件及其标签等)。