我有一个表单Form1
,从这个表单中,我以模态窗口的形式显示Form2
。在Form2
中,我做了各种编辑和删除不同数值的操作,这些更改应该在关闭Form2
后反映在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
。如果不是.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()
未被调用!
简而言之,在我的程序中,如何告诉编译器仅在Form2
中的值被更改时才调用RePopulateControls_in_Form1()
?
注:重新填充肯定是必需的,因为控件是动态创建的,有点复杂(实际上在Form2
中创建的是GUI控件及其标签等)。