У меня есть форма 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()
А затем в Форме2 я делаю,
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
, это элементы управления графическим интерфейсом, его метки и т. д.).