Visual studio не отображается конструктор
При открытии решения(проекта) нажимаю открыть конструктор, а вместо него открывается окно кода пустое со вкладкой вверху общее. Подскажите как открыть конструктор (то самое окно куда кнопочки перетаскиваешь и боксы всякие)?
Не отображается конструктор Формы
Конструктор перестал отображаться
QFileDialog не отображается, а копирует главный GUI
Пытаюсь выполнить в Qt обычный функционал открытия QFileDialog через клик на кнопку void.
Приостановить главный поток до закрытия формы
В общем не могу понять, как сделать так, чтоб поток main тормозился, пока не закроется форма .
Не отображается визуальный конструктор
Как-то раз я создал свой первый проект WPF в Visual Studio 2013, случайно, видимо, закрыл.
У вас форма без кода, и нет *.Designer.vb файла. Видимо вы их удалили, и остался только один пустой файл.
Код рядом в другом файле, и при запуске приложения всё что я в конструкторе делал всё появляется.
Добавлено через 4 часа 47 минут
Хотя form1.vb 3 байта. Можно ли его восстановить, если при запуске программы на исполнение всё появляется?
какой именно подфайл декомпилировать (там столько ресурсов открывается много)?
Добавлено через 6 минут
Какой подфайл компилировать?(там целая куча их)
пустяк . решается так: Меню Вид-->Область элементов. По английски: View-->Toolbox. А иконка - перекрестие из молотка и гаечного ключа.
Вылечил следующим образом: слева в "решении" выбираем файл "формы.h" конструктор которой пропал, справа на "панели элементов" выбираем закладку свойства, на ней в поле "Тип файла" устанавливаем "Форма С++" у меня почему-то было установлено "заголовочный файл С++".
вуаля семупле!!
Такая же хрень была. Создал форму, выключил комп и пошёл спать. На утро загрузил проект, а формы-то нет. Ёпрст.
А она есть, но только спряталась.
Надо в обозревателе решений найти файл ресурса *rc. Щёлкнуть по нему два раза. Выскочит содержимое как на картинке. Там под Dialog скрывается IDD_. Это описание формы. Щёлкнуть два раза, и выскочит на экран вожделенная форма.
Если конструктор Windows Forms не загружается из-за ошибки в коде, в стороннем компоненте или где-то еще, вместо конструктора появится страница ошибок. Эта страница ошибок не обязательно означает ошибку в конструкторе. Ошибка может находиться где-то на странице с выделенным кодом с именем .Designer.cs. Ошибки отображаются в свертываемых желтых строках со ссылкой для перехода к расположению ошибки на кодовой странице.
Вы можете игнорировать ошибки и продолжить загрузку конструктора, нажав кнопку Пропустить и продолжить. Это действие может привести к непредвиденному поведению, например, элементы управления могут не отображаться в области конструктора.
Экземпляры ошибки
При развертывании желтой строки ошибок отображается каждый экземпляр ошибки. Многие типы ошибок содержат точное местоположение в следующем формате: [имя_проекта][имя формы] строка:[номер строки] столбец:[номер столбца]. Если с ошибкой связан стек вызовов, можно щелкнуть ссылку Показать стек вызовов. Изучение стека вызовов может помочь устранить ошибку.
- Для приложений 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 загрузила класс, но класс невозможно создать. Вместо этого измените класс в представлении кода, щелкнув класс правой кнопкой мыши и выбрав Просмотреть код.
Из этого краткого руководства вы узнаете, как создать новое приложение Windows Forms с помощью Visual Studio. После создания первоначального приложения вы научитесь добавлять элементы управления и обрабатывать события. По завершении работы с этим руководством у вас будет простое приложение, добавляющее имена в список.
В этом руководстве описано следующее:
- Создание приложения Windows Forms
- Добавление элементов управления на форму
- Обработка событий элемента управления для предоставления функциональных возможностей приложения
- Запустите приложение
Предварительные требования
Создание приложения Windows Forms
Первым шагом в создании нового приложения является запуск Visual Studio и создание приложения на основе шаблона.
Запустите Visual Studio.
Выберите Создать новый проект.
В поле Поиск шаблонов введите winforms и нажмите клавишу ВВОД .
В окне Настроить новый проект задайте в качестве имени проекта значение Names и щелкните Создать.
Вы также можете сохранить проект в другую папку, изменив параметр Расположение.
Запустите Visual Studio.
Выберите Создать новый проект.
В поле Поиск шаблонов введите winforms и дождитесь появления результатов поиска.
В списке шаблонов выберите Приложение Windows Forms и щелкните Далее.
В окне Настроить новый проект задайте в поле Имя проекта значение Names и щелкните Создать.
Вы также можете сохранить проект в другую папку, изменив путь в поле Расположение.
После создания приложения Visual Studio должен открыть панель конструктора для формы по умолчанию Form1. Если конструктор форм не отображается, дважды щелкните форму в области Обозреватель решений, чтобы открыть окно конструктора.
Важные элементы среды Visual Studio
Поддержка Windows Forms в Visual Studio состоит из четырех важных компонентов, с которыми вы будете взаимодействовать при создании приложения.
Все файлы проекта, код, формы и ресурсы отображаются в этой области.
На этой панели отображаются параметры свойств, которые можно настроить в зависимости от выбранного элемента. Например, если выбрать элемент в Обозревателе решений, отобразятся параметры свойств, связанные с файлом. Если выбрать объект в конструкторе, отобразятся параметры элемента управления или формы.
Это конструктор для формы. Он является интерактивным, и на него можно перетаскивать объекты из панели элементов. Выбирая и перемещая элементы в конструкторе, можно визуально создавать пользовательский интерфейс для приложения.
Панель элементов содержит все элементы управления, которые можно добавить на форму. Чтобы добавить элемент управления на текущую форму, дважды щелкните элемент управления или перетащите его.
Добавление элементов управления на форму
Открыв конструктор форм 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 |
Вы должны получить в конструкторе форму, которая выглядит следующим образом.
Обработка событий
Теперь, когда в форме есть все элементы управления, необходимо обрабатывать события элементов управления, чтобы реагировать на вводимые пользователем данные. Открыв конструктор форм, выполните следующие действия.
Выберите в форме элемент управления "Кнопка".
В области Свойства щелкните значок события , чтобы вывести список событий кнопки.
Найдите событие Click и дважды щелкните его, чтобы создать обработчик событий.
Это действие добавляет следующий код в форму:
Код, помещаемый в этот обработчик, будет добавлять имя, заданное элементом управления TextBox txtName , в элемент управления ListBox lstNames . Однако мы хотим, чтобы имя удовлетворяло двум условиям: указанное имя не должно быть пустым, и его еще не должно быть в списке.
В следующем примере кода показано добавление имени в элемент управления lstNames .
Запустите приложение
Теперь, когда у нас есть код события, можно запустить приложение, нажав клавишу F5 или выбрав пункт меню Отладка>Начать отладку. Отобразится форма, и вы можете ввести имя в текстовое поле, а затем добавить его, нажав кнопку.
Из этого краткого руководства вы узнаете, как создать приложение Windows Presentation Foundation (WPF) с помощью Visual Studio. После создания первоначального приложения вы научитесь добавлять элементы управления и обрабатывать события. По завершении работы с этим руководством у вас будет простое приложение, добавляющее имена в список.
В этом руководстве описано следующее:
- Создание приложения WPF
- Добавление элементов управления на форму
- Обработка событий элемента управления для предоставления функциональных возможностей приложения
- Запустите приложение
Ниже представлен предварительный просмотр приложения, которое будет создано в данном руководстве.
Предварительные требования
Создание приложения WPF
Первым шагом в создании нового приложения является запуск Visual Studio и создание приложения на основе шаблона.
Запустите Visual Studio.
Выберите Создать новый проект.
В поле Поиск шаблонов введите wpf и нажмите клавишу ВВОД .
В списке шаблонов выберите Приложение WPF, а затем нажмите Далее.
В окне Настройка нового проекта выполните следующие действия:
Запустите Visual Studio.
Выберите Создать новый проект.
В поле Поиск шаблонов введите wpf и нажмите клавишу ВВОД .
В списке шаблонов выберите Приложение WPF, а затем нажмите Далее.
В окне Настройка нового проекта выполните следующие действия:
После создания приложения в Visual Studio должна открыться панель конструктора XAML для формы по умолчанию MainWindow. Если конструктор не отображается, дважды щелкните файл MainWindow.xaml в области Обозреватель решений, чтобы открыть конструктор.
Важные элементы среды Visual Studio
Поддержка WPF в Visual Studio состоит из пяти важных компонентов, с которыми вы будете взаимодействовать при создании приложения.
Все файлы проекта, код, окна и ресурсы отображаются в этой области.
На этой панели отображаются параметры свойств, которые можно настроить в зависимости от выбранного элемента. Например, если выбрать элемент в Обозревателе решений, отобразятся параметры свойств, связанные с файлом. Если выбрать объект в конструкторе, отобразятся параметры этого элемента.
Панель элементов содержит все элементы управления, которые можно добавить на форму. Чтобы добавить элемент управления на текущую форму, дважды щелкните элемент управления или перетащите его.
Это конструктор для документа XAML. Он является интерактивным, и на него можно перетаскивать объекты из панели элементов. Выбирая и перемещая элементы в конструкторе, можно визуально создавать пользовательский интерфейс для приложения.
Если конструктор и редактор отображаются, изменения в одном из них сразу отражаются в другом. При выборе элементов в конструкторе в области Свойства отображаются свойства и атрибуты этого объекта.
Редактор кода XAML
Это редактор кода XAML для документа XAML. Редактор кода XAML — это способ создания пользовательского интерфейса вручную без конструктора. Конструктор может вычислять значения свойств элемента управления при его добавлении в конструктор. В редакторе кода XAML вам предоставляется гораздо больше контроля.
Если конструктор и редактор отображаются, изменения в одном из них сразу отражаются в другом. При переходе по текстовым курсорам в редакторе кода в области Свойства отображаются свойства и атрибуты этого объекта.
Изучение кода XAML
После создания проекта в редакторе кода XAML отображается минимальный объем кода XAML для отображения окна. Если редактор не открыт, дважды щелкните элемент MainWindow.xaml в обозревателе решений. Вы должны увидеть XAML, аналогичный приведенному ниже примеру.
Корень документа представляет тип объекта, описываемого файлом XAML. Объявлено восемь атрибутов, и обычно они относятся к трем категориям:
Пространство имен XML предоставляет структуру XML, определяя, какое содержимое XML может быть объявлено в файле.
Основной атрибут xmlns импортирует пространство имен XML для всего файла, а в данном случае сопоставляется с типами, объявленными в WPF. Другие пространства имен XML объявляют префикс и импортируют другие типы и объекты для XAML-файла. Например, пространство имен xmlns:local объявляет префикс local и выполняет сопоставление объектов, объявленных в проекте, с теми, которые объявлены в пространстве имен кода Names .
Этот атрибут сопоставляет с типом, определенным в коде: файл MainWindow.xaml.cs или MainWindow.xaml.vb, который является классом Names.MainWindow .
Любой обычный атрибут, объявленный в объекте XAML, задает свойство этого объекта. В этом случае Title атрибут задает Window.Title свойство.
Изменение окна
Сначала запустите проект и просмотрите выходные данные по умолчанию. Вы увидите окно, которое появляется, без элементов управления, и заголовок MainWindow:
Для нашего примера приложения это окно слишком велико, а его заголовок не является описательным. Измените заголовок и размер окна, заменив соответствующие атрибуты в XAML следующими значениями:
Подготовка макета
В WPF имеется система макетов с широкими возможностями с множеством различных элементов управления макетом. Элементы управления макета помогают размещать дочерние элементы управления и изменять их размеры, а также могут даже это делать автоматически. Элемент управления макета по умолчанию, предоставляемый вам в этом XAML, — это элемент управления .
Элемент управления Grid позволяет определить строки и столбцы, почти как в таблице, и размещать элементы управления внутри границ определенной комбинации строк и столбцов. Можно добавить любое количество дочерних элементов управления или других элементов управления макетом, имеющихся в Grid . Например, другой элемент управления Grid можно поместить в определенную комбинацию строк и столбцов, а для этого нового Grid затем можно задать больше строк и столбцов и собственные дочерние элементы.
Элемент управления определяет строки и столбцы, в которых будут находиться элементы управления. В сетке всегда объявлена одна строка и столбец, то есть сетка по умолчанию является отдельной ячейкой. Это не обеспечивает большую гибкость при размещении элементов управления.
Прежде чем добавлять новые строки и столбцы, добавьте новый атрибут в элемент : Margin="10" . Будет вставлена сетка, благодаря чему окно будет выглядеть немного лучше.
Затем определите две строки и два столбца, разделив сетку на четыре ячейки:
Выберите сетку в редакторе кода XAML или в конструкторе XAML. Вы увидите, что в конструкторе XAML отображается каждая строка и столбец:
Добавление первого элемента управления
После создания сетки можно приступать к добавлению в нее элементов управления. Начните с элемента управления Label. Создайте новый элемент внутри элемента после определений строк и столбцов, а затем присвойте ему строковое значение Names :
определяет содержимое Names . Некоторым элементам управления известно, как управлять содержимым, а другим — нет. Содержимое элемента управления сопоставляется со свойством Content . При задании содержимого с помощью синтаксиса атрибутов XAML можно использовать следующий формат:
. Оба способа служат для выполнения одного и того же действия — отображение текста Names в качестве содержимого метки.
У нас есть проблема, поскольку метка занимает половину окна, так как она была автоматически назначена первой строке и столбцу сетки. Для первой строки нам не нужно много пространства, поскольку мы будем использовать эту строку только для метки. Измените атрибут Height первого параметра с * на Auto . Значение Auto автоматически изменяет размер строки сетки под размер ее содержимого (в данном случае это элемент управления Label).
Обратите внимание, что теперь в конструкторе отображается метка, занимающая небольшую часть доступной высоты. Теперь имеется больше места для следующей строки. Большинство элементов управления определяют значения высоты и ширины, которые они должны занимать. Например, элемент управления "метка" имеет значение высоты, которое гарантирует, что его можно прочитать.
Размещение элементов управления
Давайте поговорим о размещении элементов управления. Метка, созданная в разделе выше, автоматически помещается в строку 0 и столбец 0 сетки. Нумерация строк и столбцов начинается с 0 и увеличивается на 1 для каждой новой строки или столбца. Элементу управления ничего не известно о сетке, и элемент управления не определяет свойства для управления своим размещением в сетке. Элемент управления может быть даже помещен в другой элемент управления макета, имеющий собственный набор правил, определяющих способ размещения элементов управления.
Как указать элементу управления, что ему следует использовать другую строку или столбец, если элемент управления не имеет сведений о сетке? В этом случае на помощь придут вложенные свойства! Сетка использует эффективную систему свойств, предоставляемую WPF. Сетка определяет новые свойства, которые дочерние элементы управления могут объявлять и использовать. Свойства фактически не существуют в самом элементе управления, они вкладываются сеткой при добавлении элемента управления в сетку.
Сетка определяет два свойства для определения размещения строк и столбцов дочернего элемента управления: Grid.Row и Grid.Column . Если эти свойства опущены в элементе управления, предполагается, что они имеют значения по умолчанию 0, поэтому элемент управления помещается в строку 0 и столбец 0 сетки. Попробуйте изменить расположение элемента управления , присвоив атрибуту Grid.Column значение 1 :
Обратите внимание, что метка теперь переместилась во второй столбец. Вложенные свойства Grid.Row и Grid.Column можно использовать для размещения последующих элементов управления, которые мы создадим. Но на этом этапе следует вернуть метку в строку 0.
Создание поля со списком имен
Теперь, когда сетка имеет правильный размер и создана метка, добавьте элемент управления "Список" в строку под меткой. Список будет находиться в строке 1 и столбце 0 . Присвоим этому элементу управления имя lstNames . После именования элемента управления на него можно ссылаться в коде программной части. Имя присваивается элементу управления с помощью атрибута x:Name .
Добавление оставшихся элементов управления
Последние два элемента управления, которые предстоит добавить, — это текстовое поле и кнопка, которые пользователь будет использовать для ввода имени, добавляемого в список. Однако вместо того, чтобы пытаться создать больше строк и столбцов для сетки, эти элементы управления будут размещены в элементе управления .
Панель стека отличается от сетки тем, как в ней размещаются элементы управления. В сетке для указания того, где должны располагаться элементы управления, вы используете свойства Grid.Row и Grid.Column , тогда как в панели стека это выполняется автоматически: сначала размещается первый элемент управления, затем после него следующий элемент управления, и так до тех пор, пока не будут размещены все элементы управления. Элементы управления размещаются в "стек" один под другим.
Создайте элемент управления после списка и вставьте его в строку 1 и столбец 1 сетки. Добавьте еще один атрибут с именем Margin и значением 5,0,0,0 :
Атрибут Margin ранее уже использовался в сетке, однако теперь мы поместим только одно значение, 10 . Мы использовали значение 5,0,0,0 в панели стека. Поле является типом Thickness и может интерпретировать оба значения. Толщина определяет пространство вокруг каждой стороны прямоугольника, слева, сверху, справа, снизу, соответственно. Если значение поля является одним значением, оно используется для всех четырех сторон.
Затем создайте и элемент управления в .
Макет окна готов. Однако в наше приложение следует добавить логику, чтобы оно работало. Далее необходимо подключить события элемента управления к коду, чтобы приложение выполняло действия.
Добавление кода для события Click
Созданная нами кнопка имеет событие Click , возникающее, когда пользователь нажимает кнопку. Можно подписаться на это событие и добавить код, который будет добавлять имя в список. Как и при задании свойства элемента управления путем добавления атрибута XAML, можно использовать атрибут XAML для подписки на событие. Задайте для атрибута Click значение ButtonAddName_Click .
Теперь необходимо создать код обработчика. Щелкните правой кнопкой мыши ButtonAddName_Click и выберите Перейдите к определению. Это действие создает метод в коде программной части, который соответствует введенному имени обработчика.
Затем добавьте следующий код для выполнения следующих трех шагов:
- Проверка того, что в текстовом поле содержится имя.
- Проверка того, что имя, указанное в текстовом поле, еще не добавлено.
- Добавление имени в список.
Запустите приложение
Теперь, когда у нас есть код события, можно запустить приложение, нажав клавишу F5 или выбрав пункт меню Отладка>Начать отладку. Отобразится окно, и вы можете ввести имя в текстовое поле, а затем добавить его, нажав кнопку.
Вылезла непонятная ошибка, я в этот момент случайно нажал куда то, и конструктор пропал, не могу разобраться, f7 и тд нажимал, толку нет.
Простой 2 комментария
Решил проблему так.
У меня было два класса, описанные в таком порядке:
public class DataGridViewRowComparer : IEqualityComparer
public partial class Form1 : Form
Просто поменял их местами, т.е.
public partial class Form1 : Form
и потом уже
public class DataGridViewRowComparer : IEqualityComparer
Раскройте файл Form1.cs (нажмите на стрелку слева от файла) и там кликните левой кнопкой мыши два раза на Form1.Designer.cs
на скрине вижу, что что-то также называется Form1 но без расширения (предпоследний на скрине). может переименовали что-то?. Если уж совсем не помогло -> создайте новый проект и скопируйте заново код
UPD:
+
найдите нечто похожее: Restore workspace
UPD:
+
Обратите внимание на второй файл Form1 (без расширения). Что это за файл? Может он мешает?
у меня была подобная ошибка
Класс Form1 можно сконструировать, но это не первый класс в файле. В Visual Studio конструктор должен использовать первый класс в файле. Переместите код класса, чтобы он был первым в файле, и еще раз попробуйте загрузить конструктор.
Экземпляры ошибки (1)
1. Скрыть стек вызовов
Спасибо Вам, решил вопрос. Оказывается классы в Form.cs надо было местами поменять да и всего то..
У меня было два класса, описанные в таком порядке:
public class DataGridViewRowComparer : IEqualityComparer
public partial class Form1 : Form
Просто поменял их местами, т.е.
public partial class Form1 : Form
и потом уже
public class DataGridViewRowComparer : IEqualityComparer
Читайте также: