Если вы просто используете formOptions, чтобы выбрать одно значение, а затем закрыть его, совет Митча - хороший способ перейти на . Мой пример здесь будет использован, если вам нужно, чтобы ребенок общался с родителем, оставаясь открытым.
В родительской форме добавьте открытый метод, который будет вызывать дочерняя форма, например
public void NotifyMe(string s)
{
// Do whatever you need to do with the string
}
Далее, когда вам нужно запустить дочернее окно от родителя, используйте этот код:
using (FormOptions formOptions = new FormOptions())
{
// passing this in ShowDialog will set the .Owner
// property of the child form
formOptions.ShowDialog(this);
}
В дочерней форме используйте этот код для передачи значения обратно родителю:
ParentForm parent = (ParentForm)this.Owner;
parent.NotifyMe("whatever");
Код в этом примере лучше использовать для чего-то вроде окна панели инструментов, которое предназначено для перемещения над основной формой. В этом случае вы должны открыть дочернюю форму (с .TopMost = true), используя .Show () вместо .ShowDialog ().
Конструкция, подобная этой, означает, что дочерняя форма тесно связана с родительской формой (поскольку дочерний элемент должен преобразовывать своего владельца в ParentForm для вызова своего метода NotifyMe). Однако это автоматически не является плохой вещью.