我有一个表单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控件及其标签等).