Добрый день! Открыто несколько документов, нужно сделать лист одного из документов активным.
Использую для этого следующий код:
if (DocumentActivate(doc_name)) {
LayoutManager.Current.CurrentLayout = layout_name;
}
где
public bool DocumentActivate(string doc_name) {
try {
if (DocumentManager.MdiActiveDocument.Name == doc_name) return true;
var document = DocumentManager.Cast<Document>().First(doc => doc.Name == doc_name);
if (document == null) return false;
using (DocumentManager.MdiActiveDocument.LockDocument()) {
DocumentManager.MdiActiveDocument = document;
}
return true;
} catch (Exception exception) {
MessageBox.Show(exception.Message);
}
return false;
}
c# autocad 2012
На строке LayoutManager.Current.CurrentLayout = layout_name; выскакивает ошибка:
eSetFailed. Подозреваю, что связана она с тем, что текущий документ ещё не стал текущим. Если вписать перед этой строкой return (прервать выполнение метода), то автокад ждёт бесконечно долго. Если закрыть окно моего плагина - документ в автокаде тут же переключится на указанный ранее в программе. Как сделать, что бы документ переключался сразу, а моя программа получила управление для продолжения действий по завершению переключения?
Я уже пробовал и DoEvents() и Editor.Update и даже Editor.Regenerate и AcApplication.UpdateScreen(). Ничего не помогло что-то...