Да простит меня Александр Ривилис за некрасивое название темы!
Как-то так получилось, что раньше я не сталкивался с этой проблемой. Для конкретики проблемы сделал демо-проект (во вложении)
Суть в следующем:
Создаю функцию с окном:
[CommandMethod("WinTest")]
public static void Test()
{
var win = new MainWindow();
Autodesk.AutoCAD.ApplicationServices.Application.ShowModalWindow(
Autodesk.AutoCAD.ApplicationServices.Application.MainWindow.Handle,
win,
false
);
На окне помещаю всего одну кнопку - вызова дочернего окна:
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
var win = new SecondWindow();
Hide();
win.ShowDialog();
Show();
}
Т.е. главное окно свернулось и мы продолжаем работать с новым окном. По завершении работы снова показывается главное окно
Теперь к проблеме:
В дочернем окне создаю кнопку, по нажатию на которую, допустим, нужно выбрать примитив в текущем чертеже:
private void BtSelectEnt_OnClick(object sender, RoutedEventArgs e)
{
Hide();
Select();
Show();
}
private static bool Select()
{
var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
var ed = doc.Editor;
var per = ed.GetEntity("\nSelect something: ");
return per.Status == PromptStatus.OK;
}
Так вот - после срабатывания метода Select() срабатывает метод Show() для главного окна!Причем дочернее (второе) окно уже перестает быть модальным. Оно хоть и не отображается, но показывается в панели задач
Пробовал использовать Visibility - тоже самое. Пробовал вместо win.ShowDialog() использовать Autodesk.AutoCAD.ApplicationServices.Application.ShowModalWindow() - тоже самое
Выглядит это так:
Надеюсь, с этим уже кто-нибудь сталкивался и нашел решение