Несколько странных ошибок с Visual Basic — не удалось установить родительское окно Win32 элемента управления

Я использую Visual Studio 2019, создавая базовый проект Visual, используя «Приложение Windows Forms (.NET)» в качестве шаблона проекта.

Это происходит сразу после того, как я создаю проект и не добавляю никакого дополнительного кода. Когда я пытаюсь создать текстовое поле в форме, Visual Studio выдает следующую ошибку (ОШИБКА 1):

Кроме того, возникает следующая ошибка, если я пытаюсь перетащить элемент управления из панели инструментов непосредственно в форму по умолчанию (ОШИБКА 2):

Ключевой частью этой ошибки из того, что я могу сказать, является «Не удалось установить родительское окно Win32 элемента управления». Ранее я пытался создать некоторые мобильные приложения с помощью Xamarin (упомянул об этом, потому что у xmarin был ошибочный графический интерфейс), однако это происходит после перезагрузки компьютера, запуска Visual Studio и создания проекта с использованием «Windows Forms App (.NET)» как шаблон проекта. Это работало в прошлом, поэтому случайно это начало происходить после того, как я пытался использовать xmarin в отдельном проекте/решении.

====

ОБНОВЛЯТЬ: При создании шаблона проекта с использованием «Windows Forms App (.NET Framework)» с добавлением «Framework» в конце я могу нарисовать текстовое поле в форме (первой ошибки не происходит). По-прежнему не удается перетащить прямо на форму. Все еще получаю вторую ошибку «Ссылка на объект не установлена ​​​​на экземпляр объекта».

Не уверен, в чем разница между «приложением Windows Forms (.NET Framework)» и «приложением Windows Forms (.NET)» в шаблонах проекта.

====

Любая помощь или идеи, пожалуйста, дайте мне знать.

Джефф

Параметр .NET Framework предназначен для .NET Framework 4.8 или более ранней версии. Вариант .NET нацелен на .NET 5.0, последнюю версию .NET Core. Поддержка WinForms должна была быть написана с нуля в .NET Core, поэтому она еще не совсем готова, хотя и очень близка к завершению. Однако есть еще некоторые проблемы. Я бы посоветовал вам попробовать новый проект и посмотреть, произойдет ли то же самое. Если это так, вам следует восстановить VS, поскольку кажется, что что-то может быть повреждено.

jmcilhinney 17.12.2020 02:13

Спасибо за эту информацию, я буду использовать предыдущую версию, так как приложение, которое я делаю, довольно простое. Так что кажется, что если я перенесу приложение на основной монитор (на ноутбуке, в настоящее время использую 3 монитора). Тогда все работает, можно идти. Похоже, это может иметь какое-то отношение к масштабированию окна. Я попытался перезапустить с масштабированием окна на 100%, и возникли другие проблемы (например, невозможность изменить размер формы).

Jeff82 17.12.2020 02:20

У меня есть Surface Pro, подключенный к двум мониторам 2K через док-станцию ​​​​Surface, и я вижу некоторые проблемы с визуальным масштабированием, но я никогда не сталкивался с подобными исключениями.

jmcilhinney 17.12.2020 02:25

С учетом сказанного, я мог бы попробовать ремонт.

Jeff82 17.12.2020 03:08

Я только что начал видеть то же сообщение об ошибке, что и на вашем первом скриншоте. Вероятно, ошибка в дизайнере .NET Core. Я бы предложил сообщить об этом в Microsoft.

jmcilhinney 17.12.2020 03:48

В то время форма отображалась некорректно (некоторые артефакты по краям) на дополнительном мониторе. Я закрыл форму, переместил окно VS на главный экран и снова открыл форму, после чего все было в порядке. Затем я смог переместить окно Vs обратно на дополнительный монитор. Теперь я могу без проблем добавлять элементы управления и даже создавать новые формы.

jmcilhinney 17.12.2020 03:50

Я показываю то же самое, я обнаружил, что если вы перетащите окно Visual Studio на главный экран, оно немедленно исправит проблему (не нужно ничего закрывать). Все равно это довольно раздражает. Это как-то связано с функцией масштабирования DPI и/или окна. Когда я пытаюсь перетащить элемент управления в форму при использовании дополнительного монитора, возникает ошибка. Я думаю, что функция перетаскивания (слишком упрощенная) возвращает пиксели за пределы формы, что вызывает ошибку. Я постараюсь выяснить, как сообщить об этом, поскольку это довольно раздражает.

Jeff82 18.12.2020 09:04

Я создаю приложение Windows Forms App (.NET) и могу перетаскивать управление в форму без ошибок. Не могли бы вы предоставить более подробную информацию, чтобы помочь воспроизвести вашу проблему?

Xingyu Zhao 21.12.2020 06:50

Когда вы делаете это с помощью неосновного монитора, иногда это вызывает проблемы. Проблема возникает при перетаскивании элементов управления на форму, когда окно Visual Studio находится на дополнительном дисплее. Также другие странные вещи случаются при попытке упорядочить группы элементов управления.

Jeff82 22.12.2020 09:10

"Автоматическое масштабирование отключено". Звучит актуально.

Hans Passant 19.01.2021 01:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
10
789
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Как отметили @Jeff82 и @jmcilhinney в комментариях к вопросу, это, по-видимому, вызвано одним или комбинацией масштабирования DPI и использованием Visual Studio на неосновном мониторе. Эти шаги решили это для меня:

  1. Закройте форму, на которую вы пытаетесь поместить элемент управления.
  2. Переместите Visual Studio на основной монитор
  3. Откройте форму еще раз
Ответ принят как подходящий

Я решил это случайно. Очень рад, что это решено, поскольку это мешало мне выполнять больше задач в Visual Studio. Для всех, у кого может быть эта проблема, я использую 3 монитора. Я настроил эти мониторы на разные параметры масштаба и макета. При этом похоже, что визуальная студия сбила с толку, которая пыталась использовать настройки основного дисплея.

Чтобы решить эту проблему, я установил одинаковые настройки «Масштаб и макет» на каждом мониторе.

Я установил это обратно на 100% на каждом мониторе, который решил проблему.

-Джефф

Для всех, кто сталкивается с этой ошибкой, как я за последний день. Если вы перемещаете WinForm из Framework в .Net 6, решение состоит в том, чтобы добавить файл app.manifest и раскомментировать следующий код.

<application xmlns = "urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
        <dpiAware xmlns = "http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
        <longPathAware xmlns = "http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
    </windowsSettings>
</application>

Другие вопросы по теме