Учебник. Добавление элементов управления в средство просмотра изображений приложения Windows Forms в Visual Studio
Область применения:Visual Studio Visual Studio для Mac Visual Studio Code
В этой серии из трех руководств вы создадите приложение Windows Forms, которое загружает изображение и отображает его. В интегрированной среде разработки Visual Studio имеются средства, необходимые для создания приложения. Подробнее см. в статье Добро пожаловать в интегрированную среду разработки Visual Studio.
В этой программе имеются поле рисунка, флажок и несколько кнопок, которые используются для управления приложением. В этом учебнике показано, как добавить эти элементы управления.
В этом третьем учебнике вы научитесь следующему:
- Добавление элементов управления в приложение
- Добавление кнопок на панель макета
- Изменение имен и расположений элементов управления
- Добавление компонентов диалоговых окон
Необходимые компоненты
Материал этого учебника построен на знаниях, которые вы получили из предыдущего учебника Создание приложения для просмотра изображений. Если вы еще не выполнили действия из этого учебника, сделайте в первую очередь это.
Добавление элементов управления в приложение
Приложение «Средство просмотра изображений» использует элемент управления PictureBox для вывода изображения. Оно использует флажок и несколько кнопок для управления изображением и фоном, а также для закрытия приложения. Вы добавите элемент PictureBox и флажок из области панели элементов в Visual Studio IDE.
- Откройте Visual Studio. Проект средства просмотра изображений находится в разделе Открыть последние.
- В конструкторе Windows Forms выберите элемент управления TableLayoutPanel, добавленный в предыдущем учебнике. Убедитесь, что в окне Свойства отображается tableLayoutPanel1.
- В левой части интегрированной среды разработки Visual Studio выберите вкладку Панель элементов. Если вы ее не видите, выберите пункт Представление>Панель элементов в строке меню или воспользуйтесь комбинацией клавиш CTRL+ALT+X. На панели элементов разверните узел Общие элементы управления.
- Дважды щелкните элемент PictureBox, чтобы добавить в форму элемент управления PictureBox. Visual Studio IDE добавит элемент управления PictureBox в первую пустую ячейку TableLayoutPanel.
- Щелкните новый элемент управления PictureBox, чтобы выбрать его, а затем щелкните черный треугольник на новом элементе управления PictureBox, чтобы отобразить его список задач.
- Выберите Закрепить в родительском контейнере, который задает для свойства Dock элемента управления PictureBox значение Fill. Это значение отображается в окне Свойства.
- В окне Свойства для элемента управления PictureBox задайте для свойства ColumnSpan значение 2. Теперь элемент управления PictureBox заполняет оба столбца.
- Установите для его свойства BorderStyle значение Fixed3D.
- В конструкторе Windows Forms выберите элемент управления TableLayoutPanel. Затем двойным щелчком выберите элемент CheckBox на панели элементов, чтобы добавить новый элемент управления CheckBox в следующую свободную ячейку таблицы. Элемент управления PictureBox занимает первые две ячейки в TableLayoutPanel, поэтому элемент управления CheckBox добавляется в нижнюю левую ячейку.
- Выберите свойство Text и введите Stretch.
Добавление кнопок на панель макета
Мы добавили элементы управления в TableLayoutPanel. Далее показано, как добавить четыре кнопки в новую панель макета в TableLayoutPanel.
- В форме выберите элемент управления TableLayoutPanel. Откройте Панель элементов, выберите Контейнеры. Дважды щелкните элемент управления FlowLayoutPanel для добавления нового элемента в последнюю ячейку TableLayoutPanel.
- Присвойте свойству Dock элемента FlowLayoutPanel значение Fill. Это свойство можно задать, щелкнув черный треугольник и выбрав Закрепить в родительском контейнере. Элемент управления FlowLayoutPanel является контейнером, в котором другие элементы управления размещаются построчно в определенном порядке.
- Выберите новый элемент FlowLayoutPanel, а затем откройте Панель элементов и выберите Общие элементы управления. Дважды щелкните элемент Кнопки, чтобы добавить кнопку с именем button1.
- Снова дважды щелкните элемент Кнопка, чтобы добавить еще одну кнопку. Интегрированная среда разработки вызывает следующий элемент button2.
- Добавьте еще две кнопки таким же образом. Другой вариант — выберите button2, а затем выберите Правка>Копировать или нажмите клавиши CTRL+C. Далее в строке меню выберите Правка>Вставить (или нажмите клавиши CTRL+V). Порядок вставки копии кнопки. Повторите вставку еще раз. Обратите внимание на то, что в интегрированной среде разработки были добавлены кнопки button3 и button4 в FlowLayoutPanel.
- Выберите первую кнопку и установите для ее свойства Text значение Показать рисунок.
- Установите для свойства Text следующих трех кнопок значения Очистить рисунок, Установить цвет фона и Закрыть.
- Чтобы изменить размер кнопок и расположить их, выберите элемент FlowLayoutPanel. Присвойте свойству FlowDirection значение RightToLeft. Кнопки должны сами выровняться по правой стороне ячейки и изменить свой порядок таким образом, чтобы кнопка Показать рисунок располагалась с правой стороны. Можно перетаскивать кнопки в элементе FlowLayoutPanel, чтобы разместить их в любом порядке.
- Щелкните кнопку Закрыть, чтобы выбрать ее. Затем выберите остальные кнопки, удерживая нажатой клавишу CTRL.
- В окне Свойства задайте для свойства Авторазмер значение True. Размеры кнопок будут изменяться соответствии с текстом.
Вы можете запустить программу, чтобы увидеть, как выглядят элементы управления. Нажмите клавишу F5, выберите Отладка>Начать отладку или нажмите кнопку Запустить. Кнопки, которые вы добавили, пока еще не функционируют.
Переименование элементов управления
В форме есть четыре кнопки: button1, button2, button3и button4 в C#. В Visual Basic в качестве первой буквы любого имени элемента управления по умолчанию используется прописная буква, поэтому в Visual Basic кнопки называются Button1, Button2, Button3 и Button4. Чтобы присвоить им более информативные имена, выполните указанные ниже действия.
- В форме нажмите кнопку Закрыть . Если все еще выделены все кнопки, для отмены выделения нажмите клавишу ESC.
- В окне Свойства найдите (Name). Измените имя на closeButton. Интегрированная среда разработки не принимает имена, содержащие пробелы.
- Переименуйте другие три кнопки как backgroundButton, clearButton, showButton. Имена можно проверить в раскрывающемся списке селектора элементов управления в окне Свойства . Отобразятся новые имена кнопок.
Можно переименовать любой элемент управления, например TableLayoutPanel или checkbox.
Добавление компонентов диалоговых окон
С помощью компонентов приложение может открывать графические файлы и выбирать цвет фона. Компонент аналогичен элементу управления. Для добавления компонента в форму используется панель элементов. Для задания значений свойств используется окно Свойства.
В отличие от элемента управления, добавление в форму компонента не добавляет в форму визуальный элемент. Вместо этого, компонент предоставляет определенное поведение, которое можно включать в коде. Например, это компонент, который открывает диалоговое окно Открыть файл.
В этом разделе добавьте в форму компоненты OpenFileDialog и ColorDialog.
- Выберите конструктор Windows Forms (Form1.cs[Design]). Затем откройте Панель элементов и выберите группу Диалоговые окна.
- Дважды щелкните элемент OpenFileDialog, чтобы добавить в форму компонент с именем openFileDialog1.
- Дважды щелкните на панели элементов элемент ColorDialog, чтобы добавить в форму компонент с именем colorDialog1. Компоненты отображаются в нижней части конструктора Windows Forms в виде значков.
- Щелкните значок openFileDialog1 и задайте два свойства:
- Установите для свойства Filter следующее значение:
JPEG Files (*.jpg)|*.jpg|PNG Files (*.png)|*.png|BMP Files (*.bmp)|*.bmp|All files (*.*)|*.*
Параметры свойства Filter определяют типы файлов, которые отображаются в диалоговом окне Выбор файла изображения.
Следующие шаги
Перейдите к следующему учебнику, чтобы узнать, как добавить код в приложение.
Создание кнопки на форме
Создание, Удаление программно кнопки Button на форме и работа с ее событиями
Здравствуйте, помогите пожалуйста. У меня на форме 2 кнопки создание через конструктор (Создать.
После нажатия кнопки в первой форме, становится невидимым TextBox во второй форме
у меня 2 формы .в первой форме, после нажатия кнопки открывается вторая форма. как сделать чтобы.
При нажатии правой кнопки мыши на форме с нее удаляются все кнопки
Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента.
При нажатии правой кнопки мыши на форме с нее удаляются все кнопки
Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента.
1512 / 779 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
Надо добавить кнопку в коллекцию контролов формы
вот так
this.Controls.Add(button1);
шарпопочитатель
Регистрация: 31.01.2010
Сообщений: 1,035
а как потом ей управлять?
1)То есть загрузить картинку в нее.
2) Как применить драг он дроп метод?(двигать)
3) Как обратотать событие онклик ?
4) Или подскажите что почитать. (я не знаю как это a гугле сформулировать)
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
Делаете это в дизайнере (конструкторе), а потом смотрите не полученный код и делаете.
Form1.Designer.cs к примеру
Регистрация: 19.08.2010
Сообщений: 72
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 : Form { public Button but = new Button(); public Form1() { InitializeComponent(); but.Text = "My Button"; but.Size = new Size(60,20); but.Location = new Point(10,10); this.Controls.Add(but); } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 : Form { public Button but = new Button(); public Form1() { InitializeComponent(); but.Text = "My Button"; but.Size = new Size(60,20); but.Location = new Point(10,10); ///////////////////////////////////////Click but.Click += new EventHandler(but_Click); this.Controls.Add(but); } ////////////////////////Обработка Click private void but_Click(object sender, EventArgs e) { MessageBox.Show("Hello","Welcome"); } } }
Программное добавление кнопки на управляемую форму
Подобная задача может возникнуть тогда, когда программист задумывается о дальнейшей поддержке и обновлении данной конфигурации. Обновить форму в которой элементы добавлены программным образом, будет намного проще и быстрее. Просто нужно будет скопировать кусок кода.
В моем случае нужно было добавить кнопку «Печать», которая в свою очередь открывает список возможных печатных форм.
Для того, чтобы программно добавить кнопку на управляемую форму, нужно в процедуре «ПриСозданииНаСервере» прописать:
Как добавить кнопки на форму с
Всем доброго времени суток!
Столкнулся со следующей проблемой, вернее не проблемой, а идеей.
В конфигурации УТ 10.3 необходимо добавить функционал в некоторое количество документов. Для реализации функционала достаточно добавить одну кнопку на форму, в КоманднуюПанельТовары. (использовать обработки заполнения ТЧ заказчик не хочет по религиозным соображениям (Кнопка должна быть видна сразу)).
Естественно корежить кучу форм у меня желания нет. Коллеги по цеху предложили следующую идею — Создавать кнопку из общего модуля динамически. Т.е. находим процедуру, которая вызывается во всех документах при открытии — в моем случае это «УстановитьДоступностьПоляВводаНомера» там добавляем кнопку в форму с помощью «Элементы.КоманднаяПанельТовары.Кнопки.Добавить».
В действия кнопки выбираем процедуру на форме в которой есть любая процедура или функция из общего модуля, а в этой процедуре прописываем уже логику доработки.
Но есть проблема для логики доработки мне нужно получить форму, откуда была вызвана эта общая процедура, а так же нужно получить имя кнопки, чтобы остановить выполнение общей процедуры после моей логики. Соответственно в этой общей процедуре должны быть параметры «ЭтаФорма» и «Элемент».
Я не смог найти такую процедуру во всех документах.
И встает вопрос, как в общей процедуре понять, что она была вызвана именно моей динамической кнопкой если в ее параметрах нет «Элемент»а?
Или может можно по полученной форме понять какая кнопка нажата?
У кого есть идеи или опыт реализации чего-то подобного?