Как сделать кнопку в visual studio c
Доброго времени суток! В этом уроке я коротко расскажу о таких элементах графического интерфейса, как кнопки. Кнопка (button), пожалуй самый распространенный элемент графического интерфейса. Так что, изучение элементов я начну именно с кнопок.
В C#, кнопки представлены элементом графического интерфейса Button. На панели элементов, этот компонент (контрол) находится в группе «Стандартные элементы управления» (или «Common Controls» в англоязычной версии Visual Studio), как показано на рисунке ниже.

Кнопка в панели элементов Visual Studio
Можете создать новый (или открыть существующий) проект приложения с графическим интерфейсом в Visual Studio и перетащить на главную форму кнопку. Чтобы проверять на практике, что я сейчас буду рассказывать. А начну я с основных свойство кнопки.
Основные свойства
Name — задает уникальное имя для кнопки (специфическое свойство, необходимо, для работы с кнопкой из кода).
Image — позволяет задать изображение для кнопки.
ImageAlign — позволяет задать выравнивание изображению на кнопке.
Enabled — разрешает или запрещает доступ к элементу, если указать значение true, то кнопка будет доступна для пользователя (он сможет нажимать на неё), значение false — наоборот, запрещает доступ.
MaximumSize — позволяет задать размер кнопке. Работает аналогично свойство MaximumSize у формы.
MinimumSize — позволяет задать размер кнопке. Работает аналогично свойство MinimumSize у формы.
Size — позволяет задать размер кнопке. Работает аналогично свойство Size у формы.
Text — позволяет задать надпись на кнопке.
TextAlign — позволяет задать выравнивание текста, например, по центу, или в левом верхнем углу кнопки.
Может иметь одно из значений, перечисленных в таблице ниже.
| Значение | Краткое описание |
|---|---|
| TopLeft | Верхний левый угол |
| TopCenter | Сверху и по центру |
| TopRight | Правый верхний угол |
| MiddleLeft | Посередине слева |
| MiddleCenter | Посередине по центру |
| MiddleRight | Посередине справа |
| BottomLeft | Левый нижний угол |
| BottomCenter | Снизу по центру |
| BottomRight | Правый нижний угол |
Visible — позволят скрыть кнопку, если установлено в false. Для отображения кнопки снова, нужно установить этому свойству значение true.
Основные события
Click — возникает, при щелчке мышью на кнопке, либо при нажатии на клавишу Enter на клавиатуре.
MouseClick — возникает, при щелчке мышью (в обработчик события, передается дополнительная информация).
Основные методы
Hide — скрывает кнопку (делает её невидимой).
Show — показывает кнопку (делает её видимой).
А вот вам пример окна с тремя кнопками:

Пример окна с тремя кнопками
Как сделать кнопку в visual studio c
Честно говорю, что я искал, как это делается, но не понял. Мне нужно, чтобы один раз нажал кнопку в программе, и с этого момента началось циклическое выполнение действий. Типа того:
Как можно такое сделать?
Регистрация: 15.02.2010
Сообщений: 15,585
Есть такое понятие как обработчик нажатия кнопки. Обычно в него можно попасть дважды кликнув на нужной кнопке в дизайнере.
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
А может как-то проще можно сделать? Я понял, что при каждом нажатии на кнопку я могу изменять значение некоторой переменной с True на False, а при обработке менять цвет кнопки, например.
Но вот можно подробнее насчет «нужной кнопки в дизайнере»?
Регистрация: 12.01.2011
Сообщений: 19,500

Чего подробнее?
Регистрация: 15.02.2010
Сообщений: 15,585
Сообщение от Krasi
А может как-то проще можно сделать? Я понял, что при каждом нажатии на кнопку я могу изменять значение некоторой переменной с True на False, а при обработке менять цвет кнопки, например.
Ну зависит от задачи и проектирования. Можно отдельный рабочий поток запустить и кнопкой переключать его состояние, модно цикл в кнопку всунуть.
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
А, понятно, ну я-то в курсе события Click. Мне-то именно это и надо, чтобы кнопка принимала 2 состояния — нажатое, и отжатое. Сейчас я имею лишь кнопку, на которую можно просто кликать, у меня по этому клику выполняется код, 1 раз.
А мне-то надо так: нажал на кнопу — она изменилась и стала нажатой, и циклически работает тот код, который я прописал для такого положения кнопки. Вот как это сделать?
Я на таком уровне в решении данного вопроса:
private void button1_Click(object sender, EventArgs e) < btn1pos = !btn1pos; if (btn1pos == true) < this.Controls["button1"].UseWaitCursor = false; >if (btn1pos == false) < this.Controls["button1"].UseWaitCursor = true; >>
Думаю, что все можно сделать намного проще, вот и спрашиваю.
Последний раз редактировалось Krasi; 09.10.2015 в 15:15 .
Регистрация: 15.02.2010
Сообщений: 15,585
1. Берете CheckBox и Appearance ставите в Баттон.
2. Делаете какой-либо флаг и перерисовываете кнопку соответствующе.
3. Используйте сторонние компоненты
4. Сами отрисуйте
.
Регистрация: 12.01.2011
Сообщений: 19,500
Да куда уж проще, вроде и так просто.
В чем смысл писать Controls[«button1»] если у вас уже есть созданная дизайнером переменная button1?
И == true/false обычно не пишут для boolean выражений. Достаточно if(btn1Pos)/if(!btn1Pos) (или просто else).
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
А можете подсказать, что у меня происходит не так? То есть сейчас вроде при первом нажатии должен работать мой код, а при втором — не должен, при третьем — снова должен и тп. Так вот, рассмотрим ситуацию на деле.
private void button1_Click(object sender, EventArgs e) < btn1pos = !btn1pos; ZedGraphControl zedGraph = new ZedGraphControl(); zedGraph.Location = new System.Drawing.Point(100, 10); zedGraph.Name = "zedGraph"; zedGraph.Size = new System.Drawing.Size(500, 300); this.Controls.Add(zedGraph); ZedGraphControl zgc = zedGraph; GraphPane myPane = zgc.GraphPane; if (btn1pos) < this.Controls["button1"].UseWaitCursor = false; /////////////////Представляем символы в двоичном виде и выводим на график///////////////// ////////////////////////////////////////////////////////////////////////////////////////// string A = richTextBox1.Text; string str_bin = asbin(A); byte[] strBytes = System.Text.Encoding.Unicode.GetBytes(A); //string str = Encoding.ASCII.GetString(strBytes); StringBuilder sb = new StringBuilder(); foreach (byte b in System.Text.Encoding.Unicode.GetBytes(A)) sb.Append(Convert.ToString(b, 2).PadLeft(8, '0')).Append(' '); string binaryStr = sb.ToString(); //////////////Массив 0 и 1 this.Controls["richTextBox2"].Text = str_bin; ////////////////////////////////////////////////////////////////Создание значений x // Set the titles and axis labels myPane.Title = "Бинарные данные"; myPane.XAxis.Title = "n, выборки"; myPane.YAxis.Title = "bin_data, единицы"; PointPairList list = new PointPairList(); int l = strBytes.Length; int[] myArr = new int[l]; // Инициализируем каждый элемент массива вручную for (int i = 0; i < l; i++) < myArr[i] = i; list.Add(myArr[i], strBytes[i]); >LineItem myCurve = myPane.AddCurve("bin_data", list, Color.Green, SymbolType.Diamond); zgc.AxisChange(); zgc.Refresh(); > if (!btn1pos) < this.Controls["button1"].UseWaitCursor = true; >> static string chr2(char c) < string s = " "; for (; c != '\0'; c = (char)((byte)c >> 1)) s = ((((byte)c & 1) != 0) ? "1" : "0") + s; return s; > static string asbin(string s)
Я нажимаю на этот батон) первый раз, и тогда строится график и в окошко №2 выводятся бинарные данные текста, введенного в окошко №1. Теперь мистика. Я сокращаю текст. Нажимаю батон, теперь он false, нажимаю еще, он снова true. И график должен бы поменяться, как и содержимое окна № 2. Но содержимое окна меняется, а вот график остается прежним. Где я что упустил?
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
private void checkBox1_CheckedChanged(object sender, EventArgs e) < if (checkBox1.Checked) < this.Controls["checkBox1"].ForeColor = Color.Green; /////////////////Представляем символы в двоичном виде и выводим на график///////////////// ////////////////////////////////////////////////////////////////////////////////////////// string A = richTextBox1.Text; string[] B = new string[1000]; int i = 0; foreach (char x in A) < B[nSymbol] += x; i++; if (i == 56) < i = 0; nSymbol++; >> //this.Controls["richTextBox2"].Text = B[1]; string s = "Hello"; < for (i = 1; i > > > else < this.Controls["checkBox1"].ForeColor = Color.DarkRed; this.Controls["richTextBox2"].Text = ""; >>
Сейчас у меня 2 состояния с помощью CheckBox с опцией Button. Когда состояние нажатое, программа заходит в цикл, в котором обновляет форму, поэтому я на экране сейчас вижу, как у меня текстовое поле все время дополняется новыми символами. Но я не могу остановить этот процесс! Я бы хотел нажать на кнопку (которая чек баттон) второй раз, и чтобы произошел выход из цикла. Но я понял, что меня сдерживает то, что все операции уже происходят в теле функции нажатия на кнопку. Что мне делать?
Как В Visual Studio 2010 Создать Кнопку В Рабочей Области Окна?
Всем привет! Нуждаюсь в помощи специалистов..
C диалоговыми окнами все понятно, а вот как быть с рабочей областью? Кнопки должны быть именно на ней по заданию(Создать три курсора. Вывести их на рабочую область в виде кнопок и тд. )
lazybiz
Создать три курсора. Вывести их на рабочую область в виде кнопок и тд.
По-точнее. Трудно представить о чем идет речь.
ajs
По-точнее. Трудно представить о чем идет речь.
Полный текст задания такой:
«Создать три курсора. Вывести их на рабочую область в виде кнопок. По нажатии на кнопку менять курсор в соответствии с изображением на кнопке.» То есть кнопки с изображениями курсоров должны быть прямо в рабочей области окна. Смену курсоров я реализовал, но через меню. Хотелось бы сделать все в соответствии с заданием/
Прект создан как win32 application
lazybiz
Я так и не понял о каких курсорах идет речь. Покажи скрин того что ты сделал. Я конечно частично догадываюсь, но лучше один раз увидеть, чем 100 раз услышать.
Учебник. Добавление элементов управления в средство просмотра изображений приложения 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 определяют типы файлов, которые отображаются в диалоговом окне Выбор файла изображения.
Следующие шаги
Перейдите к следующему учебнику, чтобы узнать, как добавить код в приложение.