Пошаговое руководство. Отладка пользовательских элементов управления Windows Forms во время разработки
При создании пользовательского элемента управления часто требуется выполнить отладку его поведения во время разработки. Это особенно верно, если вы создаете пользовательский конструктор для пользовательского элемента управления. Дополнительные сведения см. в пошаговом руководстве : Создание элемента управления Windows Forms, использующего преимущества функций Visual Studio Design-Time.
Вы можете отлаживать пользовательские элементы управления с помощью Visual Studio так же, как и любые другие классы .NET Framework. Разница заключается в том, что вы будете отлаживать отдельный экземпляр Visual Studio, которая выполняет код вашего пользовательского элемента управления.
Важный
Эта статья предназначена в первую очередь для классического конструктора In-Process для Windows Forms с .NET Framework. Процедуры могут быть не применимы напрямую или полностью совместимы с проектами, предназначенными для .NET (не .NET Framework).
Для проектов .NET Framework полностью поддерживаются в Конструкторе только те проекты, которые могут компилироваться с параметрами целевой платформы любые или x64. Проекты, использующие ActiveX, COM или другие 32-разрядные компоненты, могут иметь проблемы с совместимостью. Конструктор платформы Out-Of_Process в настоящее время в предварительной версии устраняет многие из этих проблем совместимости. Однако функциональные возможности на этапе разработки могут работать не так эффективно, как 64-разрядный конструктор In-Process. Чтобы включить конструктор платформы out-Of-Process, перейдите к
Дополнительные сведения о дизайнере Out-Of-Process см. в статье об изменениях конструктора с момента выпуска .NET Framework.
Создание проекта
Первым шагом является создание проекта приложения. Вы будете использовать этот проект для создания приложения, на котором размещен пользовательский элемент управления.
В Visual Studio создайте проект приложения Windows и назовите его DebuggingExample.
Создание проекта библиотеки элементов управления
Добавьте в решение проект библиотеки элементов управления Windows.
Добавьте новый элемент UserControl в проект DebugControlLibrary. Назовите его DebugControl.
В обозревателе решенийудалите элемент управления по умолчанию проекта, удалив файл кода с базовым именем UserControl1.
Создайте решение.
Контрольная точка
На этом этапе вы сможете увидеть пользовательский элемент управления в панели инструментов .
Чтобы проверить ваш прогресс, найдите новую вкладку с именем Компоненты DebugControlLibrary и щелкните по ней, чтобы выбрать. При открытии элемент управления отображается как DebugControl со значком по умолчанию рядом с ним.
Добавьте свойство в пользовательский элемент управления
Чтобы продемонстрировать, что код вашего пользовательского элемента управления выполняется на этапе проектирования, вы добавите свойство и установите точку останова в коде, реализующем это свойство.
Откройте DebugControl в редакторе кода. Добавьте следующий код в определение класса:
Private demoStringValue As String = Nothing <BrowsableAttribute(true)> Public Property DemoString() As String Get Return Me.demoStringValue End Get Set(ByVal value As String) Me.demoStringValue = value End Set End Property
private string demoStringValue = null; [Browsable(true)] public string DemoString { get { return this.demoStringValue; } set { demoStringValue = value; } }
Создайте решение.
Добавьте пользовательский элемент управления в форму хоста
Чтобы отладить поведение пользовательского элемента управления в процессе разработки, вы разместите экземпляр пользовательского элемента управления на хост-форме.
В проекте "DebuggingExample" откройте Form1 в конструкторе Windows Forms .
В панели элементов откройте вкладку Компоненты DebugControlLibrary и перетащите экземпляр DebugControl на форму.
Найдите настраиваемое свойство
в окне свойств . Обратите внимание, что его значение можно изменить так же, как и любое другое свойство. Кроме того, обратите внимание, что при выборе свойства свойствстрока описания свойства отображается в нижней части окна .
Настройка проекта для отладки во время разработки
Для отладки поведения пользовательского элемента управления во время разработки вы отлажите отдельный экземпляр Visual Studio, выполняющий код пользовательского элемента управления.
Щелкните правой кнопкой мыши проект DebugControlLibrary в Обозревателе решений и выберите Свойства.
На странице свойств DebugControlLibrary выберите вкладку Отладка.
В разделе Активировать действие выберите Запустить внешнюю программу. Вы будете отлаживать отдельный экземпляр Visual Studio, поэтому нажмите кнопку с многоточием () для поиска интегрированной среды разработки Visual Studio. Имя исполняемого файла — devenv.exe, и если вы установили его в расположение по умолчанию, его путь будет %ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно.
Щелкните правой кнопкой мыши проект DebugControlLibrary и выберите Установить как стартовый проект, чтобы включить эту конфигурацию отладки.
Отладка пользовательского элемента управления на этапе проектирования
Теперь вы готовы выполнить отладку пользовательского элемента управления при запуске в режиме разработки. При запуске сеанса отладки будет создан новый экземпляр Visual Studio, который будет использоваться для загрузки решения "DebuggingExample". Когда вы открываете Form1 в конструкторе форм, будет создан экземпляр пользовательского элемента управления и начнёт выполняться.
Откройте исходный файл DebugControl в редакторе кода и поместите точку останова в метод доступа
Set
свойстваDemoString
.Нажмите клавишу F5, чтобы запустить сеанс отладки. Создается новый экземпляр Visual Studio. Вы можете различать экземпляры двумя способами:
Экземпляр отладки содержит слово Running в заголовке
Экземпляр отладки имеет отключённую кнопку "Пуск" на панели инструментов "Отладка".
Ваша точка останова установлена в экземпляре отладки.
В новом экземпляре Visual Studio откройте решение "DebuggingExample". Вы можете легко найти решение, выбрав Недавние проекты в меню Файл. Файл решения "DebuggingExample.sln" будет указан в качестве последнего используемого файла.
Важный
Если вы выполняете отладку проекта .NET 6 или более поздней версии Windows Forms, не загружайте проект, а используйте этот экземпляр Visual Studio для подключения отладчика к процессу DesignToolsServer.exe. Выберите элемент меню Отладка>Присоединиться к процессу. Найдите DesignToolsServer.exe в списке процессов и нажмите Подключить. Дополнительные сведения см. в разделе Изменения, внесенные дизайнером с момента.NET Framework.
Откройте Form1 в конструкторе форм и выберите элемент управления DebugControl.
Измените значение свойства
DemoString
. Когда вы фиксируете изменения, отладочный экземпляр Visual Studio получает фокус, и выполнение останавливается в точке останова. Вы можете выполнять пошаговую отладку метода доступа к свойствам так же, как и любого другого кода.Чтобы остановить отладку, закройте запущенный экземпляр Visual Studio или нажмите кнопку Остановить отладку в экземпляре Visual Studio для отладки.
Дальнейшие действия
Теперь, когда вы можете отлаживать пользовательские элементы управления во время разработки, существует множество возможностей для расширения взаимодействия элемента управления с интегрированной среды разработки Visual Studio.
Свойство DesignMode класса Component можно использовать для написания кода, который будет выполняться только во время разработки. Дополнительные сведения см. в DesignMode.
Существует несколько атрибутов, которые можно применить к свойствам элемента управления для управления взаимодействием пользовательского элемента управления с конструктором. Эти атрибуты можно найти в пространстве имен System.ComponentModel.
Вы можете разработать пользовательский дизайнер для своего пользовательского элемента управления. Это обеспечивает полный контроль над интерфейсом разработки с помощью расширяемой инфраструктуры конструктора, предоставляемой Visual Studio. Дополнительные сведения см. в пошаговом руководстве: создание элемента управления Windows Forms, использующего преимущества функций Visual Studio (Design-Time).
См. также
.NET Desktop feedback