Задать вопрос
Bonifats
@Bonifats
Начинающий программист

Как обратиться к уже открытой форме?

Добрый день!

Господа знатоки, в очередной раз прошу совета. Ситуация кратко: приложение из двух форм. В главной форме веб-браузер.
Необходимо, чтобы, при закрытии второй формы, браузер добавлял код js. Как добавить - я знаю. Но не могу добиться того, чтобы это совершалось в момент закрытия второй формы.

Кусок кода:

private void Keyboard_FormClosing(object sender, FormClosingEventArgs e)
{
Program.frm1 = ;
Program.frm1.webKitBrowser.StringByEvaluatingJavaScriptFromString("");
}

Собственно, вторая строчка в событии Closing и должна добавлять скрипт. Но она не работает без первой строчки. А с первой строчкой следующее: если я напишу Program.frm1 = new Form1(), то во время работы программы при попытке закрыть мою Keyboard_Form, вылезет следующее сообщение:
"В результате вызова компонента COM возвращена ошибка в формате HRESULT E_FAIL."

Подозреваю, что нужно сослаться на УЖЕ открытую главную форму. Но как? Гуглю уже полдня.
  • Вопрос задан
  • 932 просмотра
Подписаться 1 Оценить Комментировать
Ответ пользователя MrDywar Pichugin К ответам на вопрос (3)
Я так понял главная форма не закрывается, закрывается вторая форма которая создается позднее.
Это значит что вы это делаете из главной формы.
Вам нужно добавить в конструктор второй формы аргумент который принимает (Form form).
И когда создаете вторую форму, то передавайте ей ссылку на главную так Form2 form2 = new Form2(this);

Во второй форме заведите закрытое поле, с которым и будет работать как с ссылкой на главную форму.

Form _mainForm;

Form2( Form form ) //Конструктор второй формы.
{
  if (form == null)
  {
    throw new ArgumentNullException("form");
  }

  this._mainForm = form;
}
Ответ написан
Комментировать