Базовый вопрос по дизайн-коду с Visual Studio/C#

[Версия Visual Studio 17.8.3 — Сообщество 2022 г.]

Я довольно часто использовал Visual Studio для написания программ на VB. Сейчас я пытаюсь использовать его для написания программ на C#. (У меня также есть опыт работы с Java, поэтому кодирование не является проблемой.) У меня проблемы со взаимодействием дизайнерского кода.

Я получаю ошибку дизайнера, хотя я не думаю, что мне следует это делать. Есть ли «правильный» способ полностью удалить функцию обработчика событий, если она нежелательна?

Сценарий: (1) В Designer я добавляю в форму метку и кнопку. (2) Я случайно дважды щелкнул метку вместо кнопки при добавлении обработчика событий. (3) Я перехожу к коду и удаляю автоматически добавленный код функции Click для метки. (К которому не должно быть привязано никакого кода.) (4) Я возвращаюсь к дизайнеру, и он выдает ошибку «Design-Time». (Имя «label1_Click» не существует в текущем контексте)

Я могу использовать отмену, чтобы вернуть функцию, и ошибка исчезнет. (Тогда я застреваю в пустой функции.) Я могу удалить метку, затем удалить код, и все в порядке. (Но если я потратил некоторое время на настройку свойств метки, удалить ее из-за того, что я случайно щелкнул по ошибке, будет болезненно.)

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

Ответы 2

Ответ принят как подходящий

Попробуйте следующее:

ВС 2022:

Открыть обозреватель решений

  • В меню VS нажмите «Просмотр».
  • Выберите Обозреватель решений (Ctrl+Alt+L).

Открыть окно свойств

  • В меню VS нажмите «Просмотр».
  • Выберите окно свойств (F4)

Откройте нужную форму в конструкторе форм (например: Form1.cs)

  • В обозревателе решений щелкните правой кнопкой мыши нужную форму (например, Form1.cs).
  • Выберите конструктор представлений (Shift+F7).

Удалить нужный обработчик событий (например, щелчок)

Опция 1:

  • В конструкторе форм (например: Form1.cs [Дизайн]) щелкните нужный элемент управления (например: label1), чтобы выбрать его.
  • Нажмите
  • Прокрутите вниз до нужного события (например, «Клик»)
  • Щелкните правой кнопкой мыши нужное событие (например, щелчок).
  • Выберите Сброс.

Вариант 2:

  • В окне «Свойства» выберите нужный элемент управления (например, label1) из раскрывающегося списка.
  • Нажмите
  • Прокрутите вниз до нужного события (например, «Клик»)
  • Щелкните правой кнопкой мыши нужное событие (например, щелчок).
  • Выберите Сброс.

Примечание. Если обработчик событий содержит код, код обработчика событий нельзя удалить из представления кода (Обозреватель решений => щелкните правой кнопкой мыши Form1.cs => Просмотреть код). Если вы уже удалили событие, как описано выше, то код обработчика события можно удалить вручную.


Необязательно: убедитесь, что подписка на событие удалена.

  • В обозревателе решений щелкните стрелку рядом с нужной формой (например, Form1.cs), чтобы развернуть ее.
  • Нажмите <имя формы>.Designer.cs.
  • Дважды щелкните код, сгенерированный конструктором форм Windows, чтобы развернуть область (или стрелку слева от текста).

Примечание. Код в <имя формы>.Designer.cs (почти) никогда не следует изменять вручную и уж точно не без резервной копии своего решения.

Возможность вернуться к дизайнеру, выбрать элемент, перейти к свойствам и удалить обработчик событий работает. Это немного неинтуитивно или, по крайней мере, отличается от того, что мне удавалось сделать в VS в Visual Basic. VB позволял программисту просто удалить подпрограмму, не нарушая при этом графический интерфейс. Ах хорошо. Новые привычки, которым стоит научиться. Спасибо!

jross 18.05.2024 00:27

Немного более простой метод, который я использую всякий раз, когда со мной такое случается. Это будет работать во всех версиях, на которые вы ссылаетесь в своем вопросе: после удаления автоматически добавленного кода посмотрите окно списка ошибок (я считаю, что оно открывается по умолчанию, обычно в нижней части окна кода). Он будет ссылаться на отсутствующее определение события. Просто дважды щелкните строку описания, и вы сразу перейдете к ошибочной строке кода в дизайнере. Удалите строку, и ошибка времени разработки исчезнет.

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