У меня есть приложение, состоящее из 2 частей. 1-я часть - это форма входа, где пользователю необходимо ввести логин и пароль. Если они верны, запускается окно «Редактор», в котором пользователь может работать.
На данный момент для запуска второго окна я использую:
var editorWindow = new EditorWindow();
editorWindow.Activate();
Проблема в том, что окно входа в систему все еще существует, и хотя это не критично, я все равно хочу закрыть его после входа в систему.
В первый раз я попытался добавить Window.Close() после открытия второго окна в файле .cs первого окна, поэтому
var editorWindow= new EditorWindow();
editorWindow.Activate();
var oldWindow = new MainWindow();
oldWindow.Close();
Что привело к Attempted to read or write protected memory ошибке.
Я попытался сделать это в файле .cs второго окна следующим образом:
this.InitializeComponent();
var oldWindow = new MainWindow();
oldWindow.Close();
Что привело к той же ошибке
Итак, как я могу сделать это правильно?





Если вы откроете второе окно в коде программной части первого окна, вы сможете просто вызвать this.Close() сразу после вызова Activate() в новом окне:
var editorWindow= new EditorWindow();
editorWindow.Activate();
this.Close();
Если вы открываете EditorWindow откуда-то еще, вам нужно получить ссылку на первое окно, чтобы закрыть его. Например, вы можете использовать для этого переменную в классе App, как предложено здесь.
Спасибо, это работает. Я не знаю, почему я не подумал об этом.
Просто вызвать
this.Close()сразу после звонкаActivate()в новом окне? Пожалуйста, разместите воспроизводимый пример, если вам нужна дополнительная помощь.