Не открывается конструктор форм visual studio 2019

Обновлено: 04.05.2024

Конструктор Windows Forms предоставляет множество средств для создания приложений Windows Forms. В этой статье показано, как создать приложение с помощью различных средств, предоставляемых конструктором, и выполнять такие задачи:

  • размещать элементы управления с помощью линий привязки;
  • выполнять задачи конструктора с помощью смарт-тегов;
  • устанавливать поля и отбивки для элементов управления;
  • располагать элементы управления с помощью элемента управления TableLayoutPanel;
  • разделять макет элемента управления с помощью элемента управления SplitContainer;
  • просматривать макет в окне "Структура документа";
  • размещать элементы управления с отображением размера и сведений о расположении;
  • задавать значения свойств в окне "Свойства".

В итоге вы создадите пользовательский элемент управления, используя разнообразные функции макета, которые доступны в конструкторе Windows Forms. Этот элемент управления реализует пользовательский интерфейс для простого калькулятора. На следующем изображении показан общий макет элемента управления калькулятора.

Создание проекта пользовательского элемента управления

Первым шагом является создание проекта элемента управления DemoCalculator.

Откройте Visual Studio и создайте проект категории Библиотека элементов управления Windows Forms. Задайте проекту имя DemoCalculatorLib.

Windows Forms Control Library template in Visual Studio 2019

Чтобы переименовать файл, в обозревателе решений щелкните правой кнопкой мыши элемент UserControl1.vb или UserControl1.cs, выберите Переименовать и замените имя файла на DemoCalculator.vb или DemoCalculator.cs. Чтобы переименовать все ссылки на элемент кода UserControl1, в соответствующем запросе выберите Да.

В конструктор Windows Forms отображается поверхность конструктора для элемента управления DemoCalculator. В этом представлении можно графически спроектировать внешний вид элемента управления, выбрав элементы управления и компоненты на панели элементов и поместив их на поверхности конструктора. Дополнительные сведения см. в статье о разновидностях пользовательских элементов управления.

Разработка макета элемента управления

Элемент управления DemoCalculator содержит несколько элементов управления Windows Forms. На этом этапе вы зададите расположение элементов управления с помощью конструктора Windows Forms.

В конструкторе Windows Forms увеличьте размер элемента управления DemoCalculator, выбрав маркер изменения размера в правом нижнем углу и перетащив его вниз и вправо. В правом нижнем углу Visual Studio просмотрите сведения о размере и расположении элементов управления. Задайте элементу управления ширину 500 и высоту 400, наблюдая за сведениями о размере при изменении размера элемента управления.

На панели элементов выберите узел Контейнеры, чтобы открыть его. Выберите элемент управления SplitContainer и перетащите его на поверхность конструктора.

Элемент SplitContainer появится на поверхности конструктора элемента управления DemoCalculator.

Размер элемента управления SplitContainer автоматически устанавливается в соответствии с размером элемента управления DemoCalculator. В окне Свойства проверьте свойства, заданные для элемента управления SplitContainer . Найдите свойство Dock. Ему задано значение DockStyle.Fill. Это означает, что размер элемента управления SplitContainer устанавливается в соответствии с границами элемента управления DemoCalculator. Измените размер элемента управления DemoCalculator, чтобы проверить это поведение.

В окне Свойства замените значение свойства Dock на None .

Элемент управления SplitContainer уменьшится до размера по умолчанию и больше не будет меняться при изменении размера элемента управления DemoCalculator.

Щелкните глиф смарт-тега () в правом верхнем углу элемента управления SplitContainer . Выберите Закрепить в родительском контейнере, чтобы присвоить свойству Dock значение Fill .

Элемент управления SplitContainer закрепится по границам элемента управления DemoCalculator.

Для некоторых элементов управления доступны смарт-теги, упрощающие проектирование. Дополнительные сведения см. в разделе Пошаговое руководство: выполнение типичных задач с помощью смарт-тегов в элементах управления Windows Forms.

Выберите вертикальную границу между панелями и перетащите ее вправо, так чтобы большую часть заняла левая панель.

SplitContainer разделяет элемент управления DemoCalculator на две панели с разделяющей их границей, которую можно перемещать. На левой панели будут находиться кнопки калькулятора и экран, а на правой будет отображаться запись арифметических операций, выполненных пользователем.

В окне Свойства замените значение свойства BorderStyle на Fixed3D .

На панели элементов выберите узел Стандартные элементы управления, чтобы открыть его. Выберите элемент управления ListView и перетащите его на правую панель элемента управления SplitContainer .

Выберите глиф смарт-тега элемента управления ListView . На панели смарт-тегов замените значение параметра View на Details .

На панели смарт-тегов выберите Изменить столбцы.

Откроется диалоговое окно Редактор коллекции ColumnHeader.

На панели смарт-тегов выберите Закрепить в родительском контейнере, а затем щелкните глиф смарт-тега, чтобы закрыть панель смарт-тегов.

С панели элементов узла Контейнеры перетащите элемент управления TableLayoutPanel на левую панель элемента управления SplitContainer .

Элемент управления TableLayoutPanel отобразится на поверхности конструктора с открытой панелью смарт-тегов. Элемент управления TableLayoutPanel упорядочивает свои дочерние элементы управления в сетке. Элемент управления TableLayoutPanel будет содержать экран и кнопки элемента управления DemoCalculator. Дополнительные сведения см. в разделе Пошаговое руководство: упорядочение элементов управления в формах Windows Forms с помощью элемента TableLayoutPanel.

На панели смарт-тегов выберите Правка строк и столбцов.

Откроется диалоговое окно Стили столбцов и строк.

Нажимайте кнопку Добавить, пока не добавятся пять столбцов. Выберите все пять столбцов, а затем в поле Тип размера выберите Процент. Параметру Процент задайте значение 20. При этом каждому столбцу задается одинаковая ширина.

В разделе Показать выберите Строки.

Нажимайте кнопку Добавить, пока не добавятся пять строк. Выберите все пять строк, а затем в поле Тип размера выберите Процент. Параметру Процент задайте значение 20. При этом каждой строке задается одинаковая высота.

В окне Свойства замените значение свойства Dock на Fill .

Заполнение элемента управления

Теперь, когда макет элемента управления настроен, можно добавить в элемент управления DemoCalculator кнопки и экран.

На панели элементов выберите значок элемента управления TextBox .

Элемент управления TextBox помещается в первую ячейку элемента управления TableLayoutPanel .

В окне Свойства замените значение свойства ColumnSpan элемента управления TextBox на 5.

Элемент управления TextBox переместится в центр своей строки.

Замените значение свойства Anchor элемента управления TextBox на Left , Right .

Элемент управления TextBox расширится по горизонтали, заняв все пять столбцов.

Измените значение свойства TextBox элемента управления TextAlign на Right .

В окне Свойства разверните узел свойства Font . Задайте значение 14 для Size и true для Bold у элемента управления TextBox .

Выберите элемент управления TableLayoutPanel .

На панели элементов выберите значок Button .

Элемент управления Button разместится в следующей свободной ячейке элемента управления TableLayoutPanel .

На панели элементов выберите Button еще четыре раза, чтобы заполнить вторую строку элемента управления TableLayoutPanel .

Выберите все пять элементов управления Button , удерживая нажатой клавишу SHIFT. Нажмите клавиши CTRL+C, чтобы скопировать элементы управления Button в буфер обмена.

Трижды нажмите сочетание клавиш CTRL+V, чтобы вставить скопированные элементы управления Button в оставшиеся строки элемента управления TableLayoutPanel .

Выберите все 20 элементов управления Button , удерживая нажатой клавишу SHIFT.

В окне Свойства замените значение свойства Dock на Fill .

Все элементы управления Button закрепятся в своих ячейках.

В окне Свойства разверните узел свойства Margin . Для All задайте значение 5.

Всем элементам управления Button задается меньший размер, чтобы увеличить поля между ними.

Выберите button10 и button20, после чего нажмите клавишу DELETE, чтобы удалить их из макета.

Выберите button5 и button15, после чего замените значение их свойства RowSpan на 2. Это будут кнопки очистки и = для элемента управления DemoCalculator.

Использование окна структуры документа

Если в элементе управления или форме присутствует несколько элементов управления, перемещаться по макету удобнее с помощью окна "Структура документа".

В строке меню выберите Вид>Другие окна>Структура документа.

В этом окне структура элемента управления DemoCalculator и его составных элементов управления представлена в виде дерева. Дочерние элементы управления контейнерных элементов управления, таких как SplitContainer , отображаются в виде подузлов дерева. Окно также позволяет переименовывать размещенные элементы управления.

В окне Структура документа щелкните правой кнопкой мыши элемент button1, чтобы выбрать его, после чего щелкните Переименовать. Замените его имя на sevenButton.

В окне Структура документа замените имена элементов управления Button , заданные конструктором, на имена для рабочей среды согласно следующему списку:

button1 на sevenButton;

button2 на eightButton;

button3 на nineButton;

button4 на divisionButton;

button5 на clearButton;

button6 на fourButton;

button7 на fiveButton;

button8 на sixButton;

button9 на multiplicationButton;

button11 на oneButton;

button12 на twoButton;

button13 на threeButton;

button14 на subtractionButton;

button15 на equalsButton;

button16 на zeroButton;

button17 на changeSignButton;

button18 на decimalButton;

button19 на additionButton;

С помощью окон Структура документа и Свойства измените значения свойства Text для каждого имени элемента управления Button согласно следующему списку:

для элемента управления sevenButton замените свойство текста на 7;

для элемента управления eightButton замените свойство текста на 8;

для элемента управления nineButton замените свойство текста на 9;

для элемента управления divisionButton замените свойство текста на / (косая черта);

для элемента управления clearButton замените свойство текста на Clear;

для элемента управления fourButton замените свойство текста на 4;

для элемента управления fiveButton замените свойство текста на 5;

для элемента управления sixButton замените свойство текста на 6;

для элемента управления multiplicationButton замените свойство текста на * (звездочка);

для элемента управления oneButton замените свойство текста на 1;

для элемента управления twoButton замените свойство текста на 2;

для элемента управления threeButton замените свойство текста на 3;

для элемента управления subtractionButton замените свойство текста на - (дефис);

для элемента управления equalsButton замените свойство текста на = (знак равенства);

для элемента управления zeroButton замените свойство текста на 0;

для элемента управления changeSignButton замените свойство текста на +/- ;

для элемента управления decimalButton замените свойство текста на . (точка);

для элемента управления additionButton замените свойство текста на + (знак "плюс");

На поверхности конструктора выберите все элементы управления Button , удерживая нажатой клавишу SHIFT.

В окне Свойства разверните узел свойства Font . Задайте значение 14 для Size и true для Bold у всех элементов управления Button .

На этом разработка элемента управления DemoCalculator завершена. Остается только добавить логику калькулятора.

Добавление обработчиков событий

Кнопки в элементе управления DemoCalculator имеют обработчики событий, которые можно использовать для реализации большей части логики калькулятора. Конструктор Windows Forms позволяет реализовать заглушки всех обработчиков событий для всех кнопок одним выбором.

На поверхности конструктора выберите все элементы управления Button , удерживая нажатой клавишу SHIFT.

Выберите один из элементов управления Button .

В редакторе кода откроются обработчики событий, созданные конструктором.

Тестирование элемента управления

Поскольку элемент управления DemoCalculator наследуется от класса UserControl, его поведение можно проверить с помощью Контейнера для тестирования пользовательских элементов управления. Дополнительные сведения см. в разделе Практическое руководство. Тестирование поведения элемента UserControl во время выполнения.

Нажмите клавишу F5, чтобы собрать и запустить элемент управления DemoCalculator в Контейнере для тестирования пользовательских элементов управления.

Выберите границу между панелями SplitContainer и перетащите ее влево и вправо. Размеры элемента TableLayoutPanel и всех его дочерних элементов управления будут изменяться в соответствии с доступным пространством.

Завершив тестирование элемента управления, нажмите кнопку Закрыть.

Использование элемента управления в форме

Элемент управления DemoCalculator можно использовать в других составных элементах управления или в форме. Ниже описано, как это сделать.

Создание проекта

Первым шагом является создание проекта приложения. В этом проекте выполняется сборка приложения, демонстрирующего работу пользовательского элемента управления.

Создайте проект Приложение Windows Forms с именем DemoCalculatorTest.

В Обозревателе решений щелкните правой кнопкой мыши проект DemoCalculatorTest и выберите Добавить>Ссылка на проект, чтобы открыть диалоговое окно Диспетчер ссылок.

(Если вы используете Visual Studio 2017, для открытия диалогового окна Диспетчер ссылок выберите Добавить>Ссылка.)

Перейдите на вкладку Проекты и выберите проект DemoCalculatorLib, чтобы добавить ссылку на тестовый проект.

В обозревателе решений щелкните правой кнопкой мыши DemoCalculatorTest и выберите пункт Назначить запускаемым проектом.

В конструкторе Windows Forms увеличьте размер формы примерно до 700 x 500.

Использование элемента управления в макете формы

Чтобы использовать элемент управления DemoCalculator в приложении, его необходимо поместить в форму.

На панели элементов разверните узел Компоненты DemoCalculatorLib.

Перетащите элемент управления DemoCalculator с панели элементов в форму. Переместите элемент управления в левый верхний угол формы. Когда элемент управления расположен близко к границам формы, отображаются линии привязки. Линии привязки указывают расстояние свойства Padding формы и свойства Margin элемента управления. Поместите элемент управления в расположение, указанное линиями привязки.

Перетащите элемент управления Button с панели элементов и поместите его в форму.

Перемещайте элемент управления Button по элементу управления DemoCalculator, чтобы определить, где отображаются линии привязки. С помощью этой функции можно точно и легко упорядочить элементы управления. По завершении удалите элемент управления Button .

Щелкните правой кнопкой мыши элемент управления DemoCalculator и выберите пункт Свойства.

Замените значение свойства Dock на Fill .

Выберите форму, а затем разверните узел свойства Padding . Замените значение Все на 20.

Размер элемента управления DemoCalculator уменьшится в соответствии с новым значением формы Padding .

Измените размер формы, перетаскивая различные маркеры изменения размера в разные положения. Обратите внимание на то, как размер элемента управления DemoCalculator пропорционально изменяется.

Следующие шаги

В этой статье было показано, как создать пользовательский интерфейс для простого калькулятора. В дальнейшем можно расширить его функциональность, реализовав логику калькулятора, а затем опубликовать приложение с помощью ClickOnce. Вы также можете ознакомиться с руководством по созданию средства просмотра рисунков с помощью Windows Forms.

I tried to alternate from Solution Explorer as well from menu Viewdesigner option, but it is still not showing a form. What is going wrong there?

I made a Google search for this, but I did not find anything useful on this.

Please check in the image that I'm getting during the opening project.:

Please check in the image that I

Push Shift+F7 , which is the shortcut to open the designer. You should also be able to access it using the Solution Explorer on the right-hand side of your VS environment.

2 Answers 2

You can now choose to sort by Trending, which boosts votes that have happened recently, helping to surface more up-to-date answers.

Trending is based off of the highest score sort and falls back to it if no posts are trending.

Make sure you only have the form declared in your file. If you have more than one class defined, the design viewer will not work.

This helped me, the designer worked fine until I added another class to the same file. It worked again when I removed the new class.

This was my issue. I had another class in the same file as Form1.cs. When I removed the class, the designer worked again.

Omg, what a nightmare that was. I created an EventArgs class in the same file as the control. VS should issue a warning or something about that. You saved me a LOT of time, no way I would have realized that on my own.

Preview Visual Studio 2019 until v16.4 needs a VSIX separate installation extension. Now you can update your Preview of Visual Studio 2019 (to 16.5 or higher) and you don't need this extension. You can do it through the menu "Help" of the Visual Studio IDE.

After the update, go to menu ToolsOptionsEnvironmentPreview Features and check the "Use previews of the .NET Core SDK (requires restart)" option.

Restart Visual Studio and it will work ;)

You can install the Preview Version that will have all these and more feature enabled. As it’s a preview, it may be unstable, but it can run side by side with your normal version in case something is broken in preview.

Если конструктор Windows Forms не загружается из-за ошибки в коде, в стороннем компоненте или где-то еще, вместо конструктора появится страница ошибок. Эта страница ошибок не обязательно означает ошибку в конструкторе. Ошибка может находиться где-то на странице с выделенным кодом с именем .Designer.cs. Ошибки отображаются в свертываемых желтых строках со ссылкой для перехода к расположению ошибки на кодовой странице.

Windows Forms Designer error page

Вы можете игнорировать ошибки и продолжить загрузку конструктора, нажав кнопку Пропустить и продолжить. Это действие может привести к непредвиденному поведению, например, элементы управления могут не отображаться в области конструктора.

Экземпляры ошибки

При развертывании желтой строки ошибок отображается каждый экземпляр ошибки. Многие типы ошибок содержат точное местоположение в следующем формате: [имя_проекта][имя формы] строка:[номер строки] столбец:[номер столбца]. Если с ошибкой связан стек вызовов, можно щелкнуть ссылку Показать стек вызовов. Изучение стека вызовов может помочь устранить ошибку.

Windows Forms Designer expanded error

  • Для приложений Visual Basic на странице ошибок во время разработки отображается только одна ошибка, но может отображаться несколько экземпляров одной и той же ошибки.
  • Для приложений C++ ошибки не содержат ссылок на расположение кода.

Справка по ошибке

Ошибки времени разработки

В этом разделе перечислены потенциальные ошибки.

не является допустимым идентификатором

Эта ошибка указывает, что поле, метод, событие или объект имеют неправильное имя.

уже существует в

отсутствует на панели элементов

Сторонний конструктор пытался получить доступ к вкладке на панели элементов, которая не существует. Обратитесь к поставщику компонентов.

Синтаксический анализатор запрошенного языка не установлен

Отсутствует служба, которая требуется для генерирования и анализа исходного кода

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Произошло исключение при попытке создать экземпляр

Сторонний конструктор запросил у Visual Studio создание объекта, но объект вызвал ошибку. Обратитесь к поставщику компонентов.

Документ открыт в несовместимом режиме в другом редакторе

Изменения в документ уже внесены в другом редакторе

Закройте и снова откройте конструктор, чтобы изменения вступили в силу. Как правило, Visual Studio автоматически перезагружает конструктор после внесения изменений. Однако другие конструкторы, такие как сторонние конструкторы компонентов, могут не поддерживать поведение перезагрузки. В этом случае Visual Studio предлагает закрыть и повторно открыть конструктор вручную.

Файл открыт в несовместимом режиме в другом редакторе

Слишком высокий ранг массива

Visual Studio поддерживает только одномерные массивы в блоке кода, анализируемом конструктором. Многомерные массивы допустимы за пределами этой области.

Не удалось открыть сборку Неправильный тип элемента. Этот сериализатор ожидает элемент типа

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Не удается получить доступ к панели элементов Visual Studio

Visual Studio сделала вызов к панели элементов, которая была недоступна. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Не удается привязать обработчик событий к событию , так как событие доступно только для чтения

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

Не удается создать имя метода для указанного компонента, так как он не является членом контейнера конструктора

Visual Studio попыталась добавить обработчик событий в компонент, не имеющий переменной-члена в конструкторе. Обратитесь к поставщику компонентов.

Не удается присвоить объекту имя , поскольку у него уже есть имя

Это внутренняя ошибка в сериализаторе Visual Studio. Она указывает, что сериализатор дважды пытался назвать объект, что не поддерживается. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Не удается удалить или уничтожить унаследованный компонент

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

В категории нет инструмента для класса

Конструктор пытался ссылаться на класс на определенной вкладке панели элементов, но класс не существует. Обратитесь к поставщику компонентов.

Для класса отсутствует соответствующий конструктор

Сторонний конструктор запросил Visual Studio создать объект с определенными параметрами в конструкторе, который не существует. Обратитесь к поставщику компонентов.

Не удалось создать код для свойства

Компонент не вызвал метод Container.Add() в своем конструкторе

Это ошибка в компоненте, который вы только что загрузили или поместили в форму. Она указывает, что компонент не добавил себя в контейнерный элемент управления (будь то другой элемент управления или форма). Конструктор продолжит работу, но во время выполнения могут возникнуть проблемы с компонентом.

Имя компонента не может быть пустым

Эта ошибка возникает при попытке переименовать компонент в пустое значение.

Не удалось получить доступ к переменной , так как она еще не инициализирована

Эта ошибка может возникнуть из-за двух сценариев. У стороннего поставщика компонентов возникла проблема с элементом управления или компонентом, которые они распространили, или написанный вами код имеет рекурсивные зависимости между компонентами.

Не удалось найти тип Не удалось загрузить тип

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

Шаблоны для унаследованных форм в Visual Studio недоступны. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Делегат класса не имеет метод вызова. Является ли этот класс делегатом

Visual Studio попыталась создать обработчик событий, но с типом события возникла ошибка. Это может произойти, если событие было создано языком, не соответствующим CLS. Обратитесь к поставщику компонентов.

Повторное объявление члена

Эта ошибка возникает из-за того, что переменная-член была объявлена дважды (например, два элемента управления Button1 объявляются в коде). Имена должны быть уникальными в унаследованных формах. Кроме того, имена не могут различаться только регистром.

Ошибка чтения ресурсов из файла ресурсов для языка и региональных параметров

Эта ошибка может возникнуть, если в проекте имеется неправильный RESX-файл.

Ошибка чтения ресурсов из файла ресурсов для языка и региональных параметров по умолчанию

Эта ошибка может возникнуть, если в проекте имеется неправильный RESX-файл для языка и региональных параметров по умолчанию.

Не удалось проанализировать метод Недопустимое имя компонента:

Тип класса образуется несколькими разделяемыми классами из того же файла

При определении класса в нескольких файлах с помощью ключевого слова partial в каждом файле может быть только одно частичное определение.

Чтобы устранить эту ошибку, удалите все, кроме одного частичного определения класса из файла.

Не удалось найти сборку

Недопустимое имя сборки .

Компонент запросил определенную сборку, но имя, предоставленное компонентом, не является допустимым именем сборки. Обратитесь к поставщику компонентов.

Не удается создать базовый класс

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

Не удалось загрузить базовый класс

Невозможно создать класс в этой версии Visual Studio

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

Имя класса в этом языке является недопустимым идентификатором

Не удается добавить компонент, так как он содержит циклическую ссылку на

Нельзя добавить элемент управления или компонент в него же. Другая ситуация, когда это может произойти: в методе InitializeComponent формы (например, Form1) есть код, который создает другой экземпляр Form1.

Невозможно изменить конструктор

Эта ошибка возникает, когда файл в редакторе помечается как доступный только для чтения. Убедитесь, что файл не помечен только для чтения и приложение не запущено.

Для данного файла не удалось отобразить конструктор, так как в нем отсутствуют классы для разработки

Эта ошибка возникает, когда Visual Studio не удается найти базовый класс, удовлетворяющий требованиям конструктора. Формы и элементы управления должны быть производными от базового класса, поддерживающего конструкторы. Если вы создаете производный элемент из унаследованной формы или элемента управления, убедитесь, что проект создан.

Не установлен конструктор базового класса

Visual Studio не удалось загрузить конструктор для класса. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Конструктор должен создать экземпляр типа , однако сделать это не удалось, поскольку тип объявлен абстрактным

Эта ошибка произошла из-за того, что базовый класс объекта, передаваемого конструктору, является абстрактным, а это запрещено.

Не удалось загрузить файл в конструктор

Базовый класс этого файла не поддерживает конструкторы. В качестве обходного решения используйте представление кода для работы с файлом. Щелкните правой кнопкой мыши файл в обозревателе решений и выберите пункт Просмотр кода.

Язык этого файла не поддерживает службы, необходимые для создания и разбора кода

Эта ошибка, скорее всего, возникла из-за открытия файла, который находится в проекте, не поддерживающем конструкторы.

Класс синтаксического анализатора языка не реализован должным образом.

Используемый язык зарегистрировал класс конструктора, который не является производным от правильного базового класса. Обратитесь к поставщику используемого языка.

Имя уже используется другим объектом

Это внутренняя ошибка в сериализаторе Visual Studio. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

В объекте не реализован интерфейс IComponent

Visual Studio попыталась создать компонент, но созданный объект не реализует интерфейс IComponent. Обратитесь к поставщику компонентов за исправлением.

Объект вернул пустое значение для свойства , что недопустимо

Объект данных сериализации имеет неверный тип

Объект данных, предлагаемый сериализатором, не является экземпляром типа, соответствующего используемому текущему сериализатору. Обратитесь к поставщику компонентов.

Не удается определить расположение требуемой службы

Служба, необходимая Visual Studio, недоступна. Если вы пытались загрузить проект, который не поддерживает этот конструктор, используйте редактор кода для внесения необходимых изменений. В противном случае, если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Экземпляр службы должен быть производным от интерфейса или содержать его реализацию

Эта ошибка указывает, что компонент или конструктор компонентов вызвал метод AddService, для которого требуется интерфейс и объект, но указанный объект не реализует указанный интерфейс. Обратитесь к поставщику компонентов.

Не удалось изменить текст в окне кода

Эта ошибка возникает, если Visual Studio не удается изменить файл из-за проблем с местом на диске или памятью, или файл помечен только для чтения.

Объект перечислителя панели элементов поддерживает одновременное извлечение только одного элемента

Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Из панели элементов не удалось загрузить элемент для компонента

Указанный компонент вызвал исключение при доступе к нему Visual Studio. Обратитесь к поставщику компонентов.

Из панели элементов не удалось загрузить элемент для элемента панели элементов

Эта ошибка возникает, если данные в элементе панели элементов повреждены или версия компонента изменилась. Попробуйте удалить элемент из панели элементов и добавить его снова.

Не удалось найти тип .

При загрузке конструктора Visual Studio не удалось найти тип. Убедитесь, что имеется ссылка на сборку, содержащую тип. Если сборка является частью текущего проекта разработки, убедитесь, что проект создан.

Служба разрешения типов может быть вызвана только из потока основного приложения

Переменная либо не объявлена, либо никогда не присваивалась

Для команды меню уже существует обработчик команд

Эта ошибка возникает, если сторонний конструктор добавляет команду, которая уже имеет обработчик в таблице команд. Обратитесь к поставщику компонентов.

Компонент с именем уже существует

Сторонний компонент выполнил обратный вызов к элементу на вкладке панели элементов, но элемент уже содержал обратный вызов. Обратитесь к поставщику компонентов.

Языковые средства для данного языка не поддерживаю CodeModel, с помощью которой загружается конструктор

Тип не имеет конструктора с параметрами типов

Visual Studio не удалось найти конструктор с соответствующими параметрами. Это может быть результатом предоставления конструктора с типами, отличными от требуемых. Например, конструктор Point может принимать два целых числа. Если вы указали число с плавающей запятой, возникает эта ошибка.

Не удается добавить ссылку в текущее приложение

Не удалось извлечь текущий файл

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

Не удается найти страницу с именем

Эта ошибка возникает, когда конструктор компонентов запрашивает доступ к странице из диалогового окна "Параметры", используя имя, которое не существует. Обратитесь к поставщику компонентов.

Не удается найти свойство на странице

Эта ошибка возникает, когда конструктор компонентов запрашивает доступ к определенному значению на странице из диалогового окна "Параметры", используя значение, которое не существует. Обратитесь к поставщику компонентов.

В Visual Studio не удается открыть конструктор файла, так как класс этого файла не унаследован от класса, поддерживающего визуальную разработку

В Visual Studio не удается сохранить или загрузить экземпляры типа

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Документ не удалось открыть в Visual Studio в представлении конструктора

Эта ошибка указывает, что язык проекта не поддерживает конструктор и возникает при попытке открыть файл в диалоговом окне "Открыть файл" или из Обозревателя решений. Вместо этого измените файл в представлении кода.

В Visual Studio не удалось найти конструктор для классов типа

Visual Studio загрузила класс, но класс невозможно создать. Вместо этого измените класс в представлении кода, щелкнув класс правой кнопкой мыши и выбрав Просмотреть код.

Unfortunately, it only opens up the code for the file.

solution explorer

Probably there was some error when creating the project or you selected and incorrect type of project. Try by clicking "Add New Item" and choose a new Windows Form element. Probably you would need to change the startup class under Program.cs for the program to launch.

Try right clicking the designer file and see if you can find the designer in the "Open With" option list.

@ThomasWeller If that is the case, then it would probably be easier to recreate the original project, as little has been done thus far. I will do that, and update if issues persist.

12 Answers 12

You can now choose to sort by Trending, which boosts votes that have happened recently, helping to surface more up-to-date answers.

Trending is based off of the highest score sort and falls back to it if no posts are trending.

You are in the Folder view.

Change to the Solution (Project) view.

enter image description here

This icon at the top of Solution Explorer.

When clicking on the icon, it says that there is no solution found. There is no .sln file in the explorer, though there is a .csproj file. Clicking on that does not yield any different results.

Have the same issue when placing another class before the form class (in this case my ImageContainer class).

By just moving the internal class ImageContainer after the public partial class Form1 : Form < >the VS2019 drag&drop designer could load my Form1 class.

Also symbol in Solution Explorer changed back to a dialog icon.

The associations between the files must have gotten broken somehow. You can manually edit the .csproj file and correct it. Search for Form1 . You should have entries for each file that look something like this:

Notice the SubType and DependentUpon . Those are the important pieces.

In my case right-click on Form1.cs (with correct Form icon) and select "View Designer" still showing code.

enter image description here

To check project type, can refer this answer.

Из этого краткого руководства вы узнаете, как создать новое приложение Windows Forms с помощью Visual Studio. После создания первоначального приложения вы научитесь добавлять элементы управления и обрабатывать события. По завершении работы с этим руководством у вас будет простое приложение, добавляющее имена в список.

В этом руководстве описано следующее:

  • Создание приложения Windows Forms
  • Добавление элементов управления на форму
  • Обработка событий элемента управления для предоставления функциональных возможностей приложения
  • Запустите приложение

Предварительные требования

Создание приложения Windows Forms

Первым шагом в создании нового приложения является запуск Visual Studio и создание приложения на основе шаблона.

Запустите Visual Studio.

Выберите Создать новый проект.

Create a new Windows Forms project in Visual Studio 2019 for .NET.

В поле Поиск шаблонов введите winforms и нажмите клавишу ВВОД .

Search for the Windows Forms template in Visual Studio 2019 for .NET.

В окне Настроить новый проект задайте в качестве имени проекта значение Names и щелкните Создать.

Вы также можете сохранить проект в другую папку, изменив параметр Расположение.

Configure new Windows Forms project in Visual Studio 2019 for .NET.

Запустите Visual Studio.

Выберите Создать новый проект.

Create a new Windows Forms project in Visual Studio 2022 for .NET.

В поле Поиск шаблонов введите winforms и дождитесь появления результатов поиска.

В списке шаблонов выберите Приложение Windows Forms и щелкните Далее.

Search for the Windows Forms template in Visual Studio 2022 for .NET.

В окне Настроить новый проект задайте в поле Имя проекта значение Names и щелкните Создать.

Вы также можете сохранить проект в другую папку, изменив путь в поле Расположение.

Configure new Windows Forms project in Visual Studio 2022 for .NET.

Select the target framework for a Windows Forms project in Visual Studio 2022.

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

Важные элементы среды Visual Studio

Поддержка Windows Forms в Visual Studio состоит из четырех важных компонентов, с которыми вы будете взаимодействовать при создании приложения.

The important components of Visual Studio 2019 you should know when creating a Windows Forms project for .NET.

The important components of Visual Studio 2022 you should know when creating a Windows Forms project for .NET.

Все файлы проекта, код, формы и ресурсы отображаются в этой области.

На этой панели отображаются параметры свойств, которые можно настроить в зависимости от выбранного элемента. Например, если выбрать элемент в Обозревателе решений, отобразятся параметры свойств, связанные с файлом. Если выбрать объект в конструкторе, отобразятся параметры элемента управления или формы.

Это конструктор для формы. Он является интерактивным, и на него можно перетаскивать объекты из панели элементов. Выбирая и перемещая элементы в конструкторе, можно визуально создавать пользовательский интерфейс для приложения.

Панель элементов содержит все элементы управления, которые можно добавить на форму. Чтобы добавить элемент управления на текущую форму, дважды щелкните элемент управления или перетащите его.

Добавление элементов управления на форму

Открыв конструктор форм Form1, используйте панель Область элементов, чтобы добавить на форму следующие элементы управления:

  • Метка
  • Кнопка
  • Listbox
  • Текстовое поле

Вы можете расположить и изменить размер элементов управления в соответствии со следующими настройками. Либо визуально перенесите их, чтобы они соответствовали следующему снимку экрана, либо щелкните каждый элемент управления и настройте параметры в области Свойства. Можно также щелкнуть область заголовка формы, чтобы выбрать форму.

Объект Параметр Значение
Form Текст Names
Размер 268, 180
Label Расположение 12, 9
Текст Names
Listbox Имя lstNames
Расположение 12, 27
Размер 120, 94
текстовое поле; Имя txtName
Расположение 138, 26
Размер 100, 23
Button Имя btnAdd
Расположение 138, 55
Размер 100, 23
Текст Add Name

Вы должны получить в конструкторе форму, которая выглядит следующим образом.

Visual Studio 2019 designer with the form open for Windows Forms for .NET.

Visual Studio 2022 designer with the form open for Windows Forms for .NET.

Обработка событий

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

Выберите в форме элемент управления "Кнопка".

В области Свойства щелкните значок события , чтобы вывести список событий кнопки.

Найдите событие Click и дважды щелкните его, чтобы создать обработчик событий.

Это действие добавляет следующий код в форму:

Код, помещаемый в этот обработчик, будет добавлять имя, заданное элементом управления TextBox txtName , в элемент управления ListBox lstNames . Однако мы хотим, чтобы имя удовлетворяло двум условиям: указанное имя не должно быть пустым, и его еще не должно быть в списке.

В следующем примере кода показано добавление имени в элемент управления lstNames .

Запустите приложение

Теперь, когда у нас есть код события, можно запустить приложение, нажав клавишу F5 или выбрав пункт меню Отладка>Начать отладку. Отобразится форма, и вы можете ввести имя в текстовое поле, а затем добавить его, нажав кнопку.

Читайте также: