Как сделать кнопку выхода в visual studio

Обновлено: 08.07.2024

Честно говорю, что я искал, как это делается, но не понял. Мне нужно, чтобы один раз нажал кнопку в программе, и с этого момента началось циклическое выполнение действий. Типа того:

Как можно такое сделать?

Есть такое понятие как обработчик нажатия кнопки. Обычно в него можно попасть дважды кликнув на нужной кнопке в дизайнере. А может как-то проще можно сделать? Я понял, что при каждом нажатии на кнопку я могу изменять значение некоторой переменной с True на False, а при обработке менять цвет кнопки, например.
Но вот можно подробнее насчет "нужной кнопки в дизайнере"? А может как-то проще можно сделать? Я понял, что при каждом нажатии на кнопку я могу изменять значение некоторой переменной с True на False, а при обработке менять цвет кнопки, например. Ну зависит от задачи и проектирования. Можно отдельный рабочий поток запустить и кнопкой переключать его состояние, модно цикл в кнопку всунуть.

А, понятно, ну я-то в курсе события Click. Мне-то именно это и надо, чтобы кнопка принимала 2 состояния - нажатое, и отжатое. Сейчас я имею лишь кнопку, на которую можно просто кликать, у меня по этому клику выполняется код, 1 раз.

А мне-то надо так: нажал на кнопу - она изменилась и стала нажатой, и циклически работает тот код, который я прописал для такого положения кнопки. Вот как это сделать?

Я на таком уровне в решении данного вопроса:

Думаю, что все можно сделать намного проще, вот и спрашиваю. Последний раз редактировалось Krasi; 09.10.2015 в 15:15 . 1. Берете CheckBox и Appearance ставите в Баттон.
2. Делаете какой-либо флаг и перерисовываете кнопку соответствующе.
3. Используйте сторонние компоненты
4. Сами отрисуйте
.

Да куда уж проще, вроде и так просто.

В чем смысл писать Controls["button1"] если у вас уже есть созданная дизайнером переменная button1?

И == true/false обычно не пишут для boolean выражений. Достаточно if(btn1Pos)/if(!btn1Pos) (или просто else).

А можете подсказать, что у меня происходит не так? То есть сейчас вроде при первом нажатии должен работать мой код, а при втором - не должен, при третьем - снова должен и тп. Так вот, рассмотрим ситуацию на деле.

как сделать собственную иконку на кнопку
как сделать собственную иконку на кнопку например я хочу сделать button1 в виде диска(сохранение).

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


Сделать кнопку выхода из отчёта
Всем привет! Как сделать кнопку выхода из отчёта?

сделал, регистрацию но забыл сделать кнопку выхода
сделал, регистрацию но забыл сделать кнопку выхода, help me! вот код <?php // вся процедура.

. куда его вставить надо. или еще лучше как сделать ето в конструкторе? Зачем в конструкторе? Если это сделать в конструкторе - то форма откроется и закроется сразу же(или не откроется вовсе)
Зачем в конструкторе? Если это сделать в конструкторе - то форма откроется и закроется сразу же(или не откроется вовсе)
пасибо. а не знаешь как сделать фон(backround) прозрачным?
. а форму кнопки изменить можно. например на круглую? Как вариант, прозрачным можно считать не Wheat, а например, White или Red
Кнопку? Да - рисуешь какой-нибудь битмап, задаешь для кнопки Как вариант, прозрачным можно считать не Wheat, а например, White или Red чо то не плучается, пример формы привести не можешь. а кой там рисунок gif/jpg/bmp или без разницы? Только не забудь добавить битмап с именем bitmap1.bmp в папку с проектом все разобрался, спасибо.
подскажи как с button запустить другую форму.

Добавлено через 11 минут
Вот код

а это в обработчик щелчка по кнопке, которая должна открывать вторую форму.
а это в обработчик щелчка по кнопке, которая должна открывать вторую форму. нуууу. например вот вешаешь на форму Button1, делаешь по этой, только что созданой кнопке двойной щелчек. открывается код для обработчика Button1Click. туда и вставь. например.
а че за компилятор в чем пишешь?

MS Visual Studio 2008

Добавлено через 2 минуты
вот там такой обработчик button2

sh4d°_°ff, у delong проект CLR, а ты ему даешь код под билдер.

да я уже понял. поэтому и больше ниче не даю=)

з.ы.: чет сегодня весь день никакой. не прет ниче. туплю

Вообще помоему есть 2-а варианта создании формы:
1. Можно в конструкторе создать форму через Проект->Добавить новый элемент->Windows Forms допустим Form2, а потом ее открывать с помощь события для кнопки Button1Click вставить туда код Form2->Show(); или Form2->ShowDialog();

2. Или программно :
Что - то типо этого. Form ^f2 = gcnew Form();
f2->show();
Во втором примере возможно,что не правильно, но тоже попробуй.
А так вообще книги смотри.

Вообще помоему есть 2-а варианта создании формы:
1. Можно в конструкторе создать форму через Проект->Добавить новый элемент->Windows Forms допустим Form2, а потом ее открывать с помощь события для кнопки Button1Click вставить туда код Form2->Show(); или Form2->ShowDialog();

2. Или программно :
Что - то типо этого. Form ^f2 = gcnew Form();
f2->show();
Во втором примере возможно,что не правильно, но тоже попробуй.
А так вообще книги смотри.

На данном шаге производится добавление в форму элемента управления PictureBox и элемента управления CheckBox. Затем вы добавляете в форму элементы управления Button.

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

Перейдите на вкладку Панель элементов в левой части интегрированной среды разработки Visual Studio (или нажмите клавиши CTRL+ALT+X) и разверните группу Стандартные элементы управления. В результате этого действия отображается большая часть стандартных элементов управления, которые можно увидеть в формах.

Дважды щелкните элемент PictureBox, чтобы добавить в форму элемент управления PictureBox. Поскольку элемент управления TableLayoutPanel закреплен так, чтобы заполнять собой форму, интегрированная среда разработки добавляет элемент управления PictureBox в первую пустую ячейку (левый верхний угол).

Щелкните новый элемент управления PictureBox, чтобы выбрать его, а затем щелкните черный треугольник на новом элементе управления PictureBox, чтобы отобразить его список задач, как показано на снимке экрана ниже.

Задачи элемента управления PictureBox


****Задачи элемента управления _ _PictureBox

Если на TableLayoutPanel случайно был добавлен элемент управления неправильного типа, то его можно удалить. Щелкните элемент управления правой кнопкой мыши и в контекстном меню выберите Удалить. Удалять элементы управления из формы также можно с помощью строки меню. В строке меню выберите Правка > Отменить или Правка > Удалить.

В меню Задачи элемента управления PictureBox для элемента управления PictureBox выберите ссылку Закрепить в родительском контейнере. В результате этого действия у элемента управления PictureBox свойство Dock принимает значение Fill. Чтобы это увидеть, выберите элемент управления PictureBox, перейдите в окно Свойства и убедитесь, что свойство Dock имеет значение Fill.

Сделайте так, чтобы элемент управления PictureBox занимал два столбца, изменив его свойство ColumnSpan. Выберите элемент управления PictureBox и установите для его свойства ColumnSpan значение 2**.** Также необходимо, чтобы когда элемент управления PictureBox был пустым, отображалась пустая рамка. Установите для его свойства BorderStyle значение Fixed3D.

Выберите в форме элемент управления TableLayoutPanel и добавьте в нее элемент управления CheckBox. Двойным щелчком выберите элемент CheckBox на панели элементов, чтобы добавить новый элемент управления CheckBox в следующую свободную ячейку таблицы. Поскольку элемент управления PictureBox занимает первые две ячейки в TableLayoutPanel, элемент управления CheckBox добавляется в нижнюю левую ячейку. Выберите свойство Text и введите слово Stretch, как показано на рисунке ниже.

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


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

Выберите в форме элемент управления TableLayoutPanel, а затем на панели элементов перейдите к группе Контейнеры (из которой был взят элемент управления TableLayoutPanel) и дважды щелкните элемент FlowLayoutPanel, чтобы добавить новый элемент управления в последнюю ячейку (справа внизу). Затем закрепите элемент управления FlowLayoutPanel в элементе TableLayoutPanel. Для этого выберите ссылку Закрепить в родительском контейнере в списке задач FlowLayoutPanel, раскрываемом с помощью черного треугольника, или присвойте свойству Dock элемента FlowLayoutPanel значение Fill.

Элемент управления FlowLayoutPanel является контейнером, в котором другие элементы управления размещаются построчно в определенном порядке. При изменении размера элемента управления FlowLayoutPanel все его компоненты размещаются в одной строке, если для этого хватает места. В противном случае он размещает их по строкам одну над другой.

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

(Как правило, каждая ячейка содержит только один элемент управления. В этом примере правая нижняя ячейка TableLayoutPanel содержит четыре элемента управления "Кнопка". Почему? Потому что FlowLayoutPanel является контейнерным элементом управления, то есть элементом в ячейке, содержащим другие элементы управления.)

Добавление кнопок

Выберите только что добавленный элемент управления FlowLayoutPanel. Перейдите к группе Стандартные элементы управления на панели элементов и двойным щелчком выберите элемент Кнопка, чтобы добавить в элемент управления FlowLayoutPanel кнопку с именем button1. Чтобы добавить другую кнопку, повторите это действие. Среда интегрированной разработки определяет, что уже существует кнопка с именем button1, и называет следующую кнопку как button2.

Обычно другие кнопки добавляются с помощью панели элементов. На этот раз выберите button2, а затем в строке меню выберите Правка > Копировать (или нажмите клавиши CTRL+C). Далее в строке меню выберите Правка > Вставить (или нажмите клавиши CTRL+V), чтобы вставить копию кнопки. Повторите вставку еще раз. Обратите внимание на то, что в интегрированной среде разработки были добавлены кнопки button3 и button4 в FlowLayoutPanel.

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

Выберите первую кнопку и установите для ее свойства Text значение Показать рисунок. Затем установите для свойства Text следующих трех кнопок значения Очистить рисунок, Установить цвет фона и Закрыть.

Давайте зададим размер кнопок и разместим их таким образом, чтобы они были выровнены по правой стороне панели. Выберите элемент управления FlowLayoutPanel и обратите внимание на его свойство FlowDirection. Измените его значение на RightToLeft.

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

Если кнопки по-прежнему остаются в неправильном порядке, можно перетащить кнопки вокруг элемента управления FlowLayoutPanel для расположения их в произвольном порядке. Можно выбрать кнопку и перетащить ее влево или вправо.

Щелкните кнопку Закрыть, чтобы выбрать ее. Затем выберите остальные кнопки, удерживая нажатой клавишу CTRL.

Выделив все кнопки, перейдите к окну Свойства и прокрутите его вверх до свойства AutoSize. Это свойство указывает кнопке автоматически изменять свой размер так, чтобы весь текст мог разместиться на ней. Задайте значение true.

Кнопки теперь должны иметь соответствующий размер и быть расположены в правильном порядке. (Пока выделены все четыре кнопки, можно одновременно изменить все четыре свойства AutoSize.) На рисунке ниже показаны эти четыре кнопки.

Программа просмотра изображений с четырьмя кнопками


Средство просмотра изображений _ _с четырьмя кнопками

Теперь снова запустите программу, чтобы увидеть изменения.

Обратите внимание, что при нажатии кнопок и установке флажка пока ничего не происходит,—однако вскоре все заработает.

Элементы управления представляют собой визуальные классы, которые получают введенные пользователем данные и могут инициировать различные события. Все элементы управления наследуются от класса Control и поэтому имеют ряд общих свойств:

Anchor : Определяет, как элемент будет растягиваться

BackColor : Определяет фоновый цвет элемента

BackgroundImage : Определяет фоновое изображение элемента

ContextMenu : Контекстное меню, которое открывается при нажатии на элемент правой кнопкой мыши. Задается с помощью элемента ContextMenu

Cursor : Представляет, как будет отображаться курсор мыши при наведении на элемент

Dock : Задает расположение элемента на форме

Enabled : Определяет, будет ли доступен элемент для использования. Если это свойство имеет значение False, то элемент блокируется.

Font : Устанавливает шрифт текста для элемента

ForeColor : Определяет цвет шрифта

Location : Определяет координаты верхнего левого угла элемента управления

Name : Имя элемента управления

Size : Определяет размер элемента

Width : ширина элемента

Height : высота элемента

TabIndex : Определяет порядок обхода элемента по нажатию на клавишу Tab

Tag : Позволяет сохранять значение, ассоциированное с этим элементом управления

Кнопка

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

При нажатии на кнопку на форме в редакторе Visual Studio мы по умолчанию попадаем в код обработчика события Click , который будет выполняться при нажатии:

Оформление кнопки

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

Flat - Кнопка имеет плоский вид

Popup - Кнопка приобретает объемный вид при наведении на нее указателя, в иных случаях она имеет плоский вид

Standard - Кнопка имеет объемный вид (используется по умолчанию)

System - Вид кнопки зависит от операционной системы

Изображение на кнопке

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

Overlay : текст накладывается на изображение

ImageAboveText : изображение располагается над текстом

TextAboveImage : текст располагается над изображением

ImageBeforeText : изображение располагается перед текстом

TextBeforeImage : текст располагается перед изображением

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

Установка изображения для кнопки

В этом окне выберем опцию Local Resource и нажмем на кнопку Import , после чего нам откроется диалоговое окно для выбора файла изображения.

После выбора изображения мы можем установить свойство ImageAlign , которое управляет позиционированием изображения на кнопке:

ImageAlign

Нам доступны 9 вариантов, с помощью которых мы можем прикрепить изображение к определенной стороне кнопки. Оставим здесь значение по умолчанию - MiddleCenter , то есть позиционирование по центру.

Затем перейдем к свойству TextImageRelation и установим для него значение ImageBeforeText . В итоге мы получим кнопку, где сразу после изображения идет надпись на кнопке:

Кнопка с изображением в Windows Forms

Клавиши быстрого доступа

При работе с формами при использовании клавиатуры очень удобно пользоваться клавишами быстрого доступа. При нажатии на клавиатуре комбинации клавиш At+некоторый символ, будет вызываться определенная кнопка. Например, зададим для некоторой кнопки свойство Text равное &Аватар . Первый знак - амперсанд - определяет ту букву, которая будет подчеркнута. В данном случае надпись будет выглядеть как А ватар. И теперь чтобы вызвать событие Click, нам достаточно нажать на комбинацию клавиш Alt+А.

Кнопки по умолчанию

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

Так, свойство формы AcceptButton позволяет назначать кнопку по умолчанию, которая будет срабатывать по нажатию на клавишу Enter.

Аналогично работает свойство формы CancelButton , которое назначает кнопку отмены. Назначив такую кнопку, мы можем вызвать ее нажатие, нажав на клавишу Esc.

Содержание

  • Условие задачи
  • Выполнение
    • 1. Запустить MS Visual Studio 2010
    • 2. Создать проект на C++ по шаблону Dialog Based Application
    • 3. Изменение внешнего вида главной формы
    • 4. Этапы построения диалогового окна
    • 5. Формирование класса и ресурсов диалогового окна
    • 6. Окно MS Visual Studio и панель Solution Explorer
    • 7. Вызов диалогового окна класса CForm2 как ресурса
    • 8. Программирование события клика на кнопке «Form2» главного окна приложения

    Поиск на других ресурсах:

    Условие задачи

    1. Разработать диалоговое окно, которое содержит две кнопки OK и Cancel (рис. 1).

    Visual C++. Шаблон MFC Application. Форма, которую нужно создать

    Рис. 1. Форма, которую нужно создать

    Выполнение

    1. Запустить MS Visual Studio 2010
    2. Создать проект на C++ по шаблону Dialog Based Application

    Подробный пример создания проекта по шаблону Dialog Based Application описывается здесь .

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

    Папка приложения в нашем случае (не важно):

    Во время создания нового проекта в мастере выбираем Dialog Based Application . Все другие настройки оставляем по умолчанию.

    В результате будут сгенерированы два класса с именами CMFCAppApp и CMFCAppDlg .

    Окно MS Visual Studio после выполненных действий будет иметь вид как показано на рисунке 2.

    C++. Шаблон MFC Application. Форма приложения после создания Dialog Based Application

    Рис. 2. Форма приложения после создания Dialog Based Application

    3. Изменение внешнего вида главной формы

    Осуществим удаление кнопки OK . А кнопку Cancel переименуем в Exit .

    Для удаления кнопки OK нужно сначала ее выделить, а потом нажать клавишу Delete .

    Таким самым образом удаляем элемент в котором написано:

    C++. Шаблон MFC Application. Переименование имени кнопки с "Cancel" на "Exit"

    Пока что, в окне панели Properties имеем два элемента:

    Можно загрузить приложение на выполнение и протестовать его работу.

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

    Форма приложения будет иметь вид, как показано на рисунке 4.

    Visual C++. Шаблон MFC Application. Вынесение кнопки не привязанной к обработчику событий

    Рис. 4. Вынесение кнопки не привязанной к обработчику событий

    Свойство Caption кнопки IDC_BUTTON1 изменяем на Form2 . После нажатия на этой кнопке будет вызываться диалоговое окно.

    4. Этапы построения диалогового окна

    В Visual C++ любое диалоговое окно строится в три этапа:

    • формирование ресурсов диалогового окна;
    • создание класса диалогового окна;
    • использование класса диалогового окна.
    5. Формирование класса и ресурсов диалогового окна

    В MS Visual Studio ресурсы диалогового окна автоматически создаются после создания класса окна. Таким образом, создав класс окна, мы автоматически создаем ресурс окна.

    Visual C++. Шаблон MFC Application. Вызов "Class Wizard. " для создания класса и ресурса диалогового окна

    В результате откроется окно, которое изображено на рисунке 6.

    Visual C++. Шаблон MFC Application. Окно "MFC Class Wizard"

    Окно имеет такие поля:

    • CMFCAppApp – класс приложения в целом;
    • CMFCAppDlg – класс диалогового окна приложения;
    • CAboutDlg – класс диалогового окна About , что было сформировано при создании проекта мастером AppWizard .

    Visual C++. Шаблон MFC Application. Команда добавления нового класса

    Рис. 7. Команда добавления нового класса

    Название ресурса устанавливается как IDD_FORM2 .

    Visual C++. MFC Applicaiton. Создание нового класса CForm2 и ресурса IDD_FORM2, которые базируются на классе CDialog

    Рис. 8. Создание нового класса CForm2 и ресурса IDD_FORM2 , которые базируются на классе CDialog

    6. Окно MS Visual Studio и панель Solution Explorer

    После выполненных действий, окно панели Solution Explorer имеет вид, как показано на рисунке 9.

    Visual C++. Шаблон MFC Application. Окно Solution Explorer

    Рис. 9. Окно Solution Explorer

    7. Вызов диалогового окна класса CForm2 как ресурса

    Visual C++. Шаблон MFC Application. Вызов списка имен ресурсов приложения

    Рис. 10. Вызов списка имен ресурсов приложения

    Получаем список имен имеющихся ресурсов:

    • IDD_ABOUTBOX – ресурс диалогового окна About ;
    • IDD_FORM2 – ресурс новосозданного окна;
    • IDD_MFC_APP_DIALOG – ресурс главного окна приложения.

    Для вызова нужного ресурса, необходимо на нем сделать двойной клик мышкой. Делаем двойной клик на ресурсе IDD_FORM2 . В результате, откроется новосозданное диалоговое окно (рис. 11). Как видно из рисунка 11, оно похоже на начальное окно приложения типа Dialog Based Application .

    Visual C++. Шаблон MFC Applicaiton. Окно класса CForm2, который унаследован от класса CDialog

    Рис. 11. Окно класса CForm2 , который унаследован от класса CDialog

    Visual C++. Шаблон MFC Application. Главное окно приложения

    Рис. 12. Главное окно приложения

    Visual C++. Шаблон MFC Application. Список событий из вкладыша Control Events элемента управления IDC_BUTTON1

    Рис. 13. Список событий из вкладыша Control Events элемента управления IDC_BUTTON1

    Visual C++. Шаблон MFC Application. Выбор события BN_CLICKED и вызов обработчика события OnBnClickedButton1

    Рис. 14. Выбор события BN_CLICKED и вызов обработчика события OnBnClickedButton1

    Между скобками нужно вставить свой собственный код обработки события.

    Программный код функции обработки события клика на кнопке IDC_BUTTON1 следующий:

    Теперь можно запустить приложение на выполнение и протестировать его работу.

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