внеочередной вопрос: нужно ли ее по завершению кода дополнительно закрывать?метод Hide() - это тоже самое, что Visibility.Hide. Так что да - закрывать нужно.
да тоже об этом подумал и проверил. но тогда при нажатии форма почему то висит открытой до окончания выполнения кода.. тоже неприятно.Просто код, выполняемый в автокаде, не должен находится в классе окна!
просто она разве сама не закрывает когда код завершен?
а я всегда так делал. чем это чревато? какие на то причины?Это нарушение принципов SOLID, а в особенности принципа единой ответственности.
Просто код, выполняемый в автокаде, не должен находится в классе окна!вынес код из формы в отдельный метод. закрываю окно вызываю этот метод и все равно окно висит пока не выполнится код
Какое окно висит? Запиши видеоролик, как у меня написано в подписи - тогда будет понятно о чем идёт речь. И вообще ты запускаешь код из под отладчика?Просто код, выполняемый в автокаде, не должен находится в классе окна!вынес код из формы в отдельный метод. закрываю окно вызываю этот метод и все равно окно висит пока не выполнится код
Какое окно висит?
public class MySuperClass {
var win = new MySuperWindow();
win.ShowDialog();
MySuperClass2.StartWorkInCad();
}
Внутри своего обработчика:Код - C# [Выбрать]
using (EditorUserInteraction UI = ed.StartUserInteraction(this)) { // Здесь твоя работа с AutoCAD }
ed - это Editor
а вот с этим не совсемАлександр Пекшев aka Modis предложил сделать обращение к AutoCAD после завершения диалога. Т.е. в диалоге у пользователя ты спрашиваешь все данные, а по завершении диалога выполняешь работу с AutoCAD. Я же предложил работу внутри диалога.
а последний вариант не лучше?Последний - это какой? Сформулируй.
почти успел дополнить свое сообщениеСформулируй в чем ты видишь разницу между тем что каждый из нас троих написал. Пример Дмитрия более полный - фактически урок использования модальных форм.
тот что в видео
Я же предложил работу внутри диалога.выше говорили что лучше не производить операций с автокадом внутри диалога
выше говорили что лучше не производить операций с автокадом внутри диалогаДа. Но иногда приходится.
Внутри своего обработчика:Т е так же каак было весь код внутри обработчика нажатия только дополнительно обернуть его в этк конструкцию?
Код - C# [Выбрать]
using (EditorUserInteraction UI = ed.StartUserInteraction(this))
{
// Здесь твоя работа с AutoCAD
}
Т е так же каак было весь код внутри обработчика нажатия только дополнительно обернуть его в этк конструкцию?Именно. this.Hide() насколько я помню в этом случае не нужен.
Что писать в методе отклика на нажатие кнопки:В вашем видео сказано, что порой ссылка на форму может навредить.
В каких случаях необходимо "убивать" форму методом Dispose?Я с таким однажды только сталкивался. Мне нужно было поменять картинку в диалоге, но при попытке замены выскакивало исключение. Точного сообщения исключения не помню, но содержание примерно такое, что мол данный ресурс используется и не может быть заменён. Проблема пропала только после того, как диалог был не просто закрыт, но и "отдиспозен".