Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/215: Рейтинг темы: голосов - 215, средняя оценка - 4.82
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94

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

01.12.2009, 12:46. Показов 41654. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
скажите please как сделать собственную кнопку выхода из windows forms, как придать "button" значение выхода
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2009, 12:46
Ответы с готовыми решениями:

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

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

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

66
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.12.2009, 13:56
C++
1
2
3
Application::Exit();//для всего приложения
или 
Close();//для одной формы
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
01.12.2009, 16:35  [ТС]
Цитата Сообщение от M128K145 Посмотреть сообщение
C++
1
2
3
Application::Exit();//для всего приложения
или 
Close();//для одной формы
вот код формы...

C++
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#pragma once
 
 
namespace programm {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    /// <summary>
    /// Сводка для Form1
    ///
    /// Внимание! При изменении имени этого класса необходимо также изменить
    ///          свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
    ///          связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,
    ///          конструкторы не смогут правильно работать с локализованными
    ///          ресурсами, сопоставленными данной форме.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
             
 
 
    protected: 
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->BackgroundImage = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"button1.BackgroundImage")));
            this->button1->BackgroundImageLayout = System::Windows::Forms::ImageLayout::None;
            this->button1->DialogResult = System::Windows::Forms::DialogResult::Cancel;
            this->button1->Location = System::Drawing::Point(65, 474);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(32, 32);
            this->button1->TabIndex = 0;
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // Form1
            // 
            this->AcceptButton = this->button1;
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->BackColor = System::Drawing::SystemColors::Control;
            this->BackgroundImage = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"$this.BackgroundImage")));
            this->BackgroundImageLayout = System::Windows::Forms::ImageLayout::None;
            this->CancelButton = this->button1;
            this->ClientSize = System::Drawing::Size(837, 535);
            this->Controls->Add(this->button1);
            this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             }
    };
}
...куда его вставить надо... или еще лучше как сделать ето в конструкторе?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.12.2009, 19:27
Зачем в конструкторе? Если это сделать в конструкторе - то форма откроется и закроется сразу же(или не откроется вовсе)
C++
1
2
3
4
5
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    Application::Exit();//для всего приложения
    //или Close();//для одной формы
}
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
01.12.2009, 19:55  [ТС]
Цитата Сообщение от M128K145 Посмотреть сообщение
Зачем в конструкторе? Если это сделать в конструкторе - то форма откроется и закроется сразу же(или не откроется вовсе)
C++
1
2
3
4
5
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    Application::Exit();//для всего приложения
    //или Close();//для одной формы
}
пасибо... а не знаешь как сделать фон(backround) прозрачным?
... а форму кнопки изменить можно...например на круглую?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.12.2009, 20:12
C++
1
2
this->BackColor = Color::Wheat;
this->TransparencyKey = Color::Wheat;
Как вариант, прозрачным можно считать не Wheat, а например, White или Red
Кнопку? Да - рисуешь какой-нибудь битмап, задаешь для кнопки
C++
1
2
3
button1->FlatStyle = FlatStyle::Flat;
button1->BackColor = Color::Wheat;
this->TransparencyKey = Color::Wheat;
И все. Другой способ - гуглить
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
01.12.2009, 23:37  [ТС]
Цитата Сообщение от M128K145 Посмотреть сообщение
C++
1
2
this->BackColor = Color::Wheat;
this->TransparencyKey = Color::Wheat;
Как вариант, прозрачным можно считать не Wheat, а например, White или Red
чо то не плучается, пример формы привести не можешь?...а кой там рисунок gif/jpg/bmp или без разницы?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
02.12.2009, 00:25
вот, посмотри
C++
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#pragma once
 
 
namespace hyfrt {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
 
    /// <summary>
    /// Summary for Form1
    ///
    /// WARNING: If you change the name of this class, you will need to change the
    ///          'Resource File Name' property for the managed resource compiler tool
    ///          associated with all .resx files this class depends on.  Otherwise,
    ///          the designers will not be able to interact properly with localized
    ///          resources associated with this form.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            this->BackColor = Color::White;
            this->TransparencyKey = Color::White;
            //
            //TODO: Add the constructor code here
            //
        }
 
    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
 
 
    protected: 
 
    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(78, 36);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"button1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(292, 268);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
             {
                 button1->FlatStyle = FlatStyle::Flat;
                 TransparencyKey = Color::White;
                 button1->FlatAppearance->BorderSize = 0;
                 button1->Height = 48;
                 button1->Width = 48;
                 button1->BackgroundImage::set(Image::FromFile("bitmap1.bmp"));
             }
    };
}
Только не забудь добавить битмап с именем bitmap1.bmp в папку с проектом
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
02.12.2009, 10:12  [ТС]
все разобрался, спасибо...
подскажи как с button запустить другую форму...?
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
02.12.2009, 10:53
C++
1
2
3
4
5
6
#include "Form2.h"
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show;
}
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
02.12.2009, 14:37  [ТС]
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
C++
1
2
3
4
5
6
#include "Form2.h"
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show;
}
#include "Form2.h" я так понял в *.срр, а void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show;
куда? у меня там выше код есть не подскажешь?

Добавлено через 11 минут
Вот код
C++
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#pragma once
 
 
namespace рп {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    /// <summary>
    /// Сводка для Form1
    ///
    /// Внимание! При изменении имени этого класса необходимо также изменить
    ///          свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
    ///          связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,
    ///          конструкторы не смогут правильно работать с локализованными
    ///          ресурсами, сопоставленными данной форме.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::Button^  button2;
    protected: 
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->button2 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(24, 252);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"button1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // button2
            // 
            this->button2->Location = System::Drawing::Point(24, 64);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(75, 23);
            this->button2->TabIndex = 1;
            this->button2->Text = L"button2";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->BackColor = System::Drawing::Color::Lime;
            this->BackgroundImage = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"$this.BackgroundImage")));
            this->ClientSize = System::Drawing::Size(577, 392);
            this->Controls->Add(this->button2);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->TransparencyKey = System::Drawing::Color::Lime;
            this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
            this->ResumeLayout(false);
 
        }
#pragma endregion
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
             }
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 Application::Exit();}
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
             }
    };
}
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
02.12.2009, 16:38
сори недопонял в чем проблема...
Цитата Сообщение от delong Посмотреть сообщение
#include "Form2.h"
это надо в *.срр формы один там где инклуды, например под #include "Form1.h"
Цитата Сообщение от delong Посмотреть сообщение
Form2->Show;
а это в обработчик щелчка по кнопке, которая должна открывать вторую форму...
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
02.12.2009, 17:54  [ТС]
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение

а это в обработчик щелчка по кнопке, которая должна открывать вторую форму...
а именно куда?подскажи?
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
02.12.2009, 18:02
нуууу...например вот вешаешь на форму Button1, делаешь по этой, только что созданой кнопке двойной щелчек... открывается код для обработчика Button1Click.... туда и вставь... например....
а че за компилятор в чем пишешь?
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
02.12.2009, 18:41  [ТС]
MS Visual Studio 2008

Добавлено через 2 минуты
вот там такой обработчик button2
C++
1
2
3
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
                         }
        };
Добавлено через 1 минуту
в блокноте)))) (шутка)
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
02.12.2009, 21:18
sh4d°_°ff, у delong проект CLR, а ты ему даешь код под билдер.
C++
1
2
Form2 f2;
f2.ShowDialog();
1
02.12.2009, 21:22

Не по теме:

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

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

1
 Аватар для ForestG
39 / 39 / 9
Регистрация: 21.11.2009
Сообщений: 201
02.12.2009, 21:24
Вообще помоему есть 2-а варианта создании формы:
1. Можно в конструкторе создать форму через Проект->Добавить новый элемент->Windows Forms допустим Form2, а потом ее открывать с помощь события для кнопки Button1Click вставить туда код Form2->Show(); или Form2->ShowDialog();

2. Или программно :
Что - то типо этого. Form ^f2 = gcnew Form();
f2->show();
Во втором примере возможно,что не правильно, но тоже попробуй...
А так вообще книги смотри...
1
24 / 24 / 2
Регистрация: 27.11.2009
Сообщений: 94
02.12.2009, 23:17  [ТС]
Цитата Сообщение от ForestG Посмотреть сообщение
Вообще помоему есть 2-а варианта создании формы:
1. Можно в конструкторе создать форму через Проект->Добавить новый элемент->Windows Forms допустим Form2, а потом ее открывать с помощь события для кнопки Button1Click вставить туда код Form2->Show(); или Form2->ShowDialog();

2. Или программно :
Что - то типо этого. Form ^f2 = gcnew Form();
f2->show();
Во втором примере возможно,что не правильно, но тоже попробуй...
А так вообще книги смотри...
спс..я в Form1 добавил #inlude Form2.h, а можно ли сделать чтобы при открывании Form2 Form1 закрывалась-добавил в обработчик button1 Close(), но они обе закрываются т.к. Form2 запускается от Form1?
0
 Аватар для ForestG
39 / 39 / 9
Регистрация: 21.11.2009
Сообщений: 201
02.12.2009, 23:21
попробуй this->Close();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2009, 23:21
Помогаю со студенческими работами здесь

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

Как сделать активной кнопку сворачивания приложения (используя SetWindowLong)?
У приложения не активна кнопка сворачивания окна, нужно сделать ее обратно активной. говорят, что с помощью SetWindowLong можно поменять...

Как вставить собственную иконку приложения?
Vopros k tem kto programmiruet na embedded VB 3.0: kak vstavit' ikonku prilozheniua vmesto standartnoi VB?

Создать меню, в котором пользователь сам сможет выбирать, что ему нужно сделать, пока не нажмет кнопку выхода
Всем доброго времени суток! Есть небольшая проблема с меню в С++. Задача: создать меню, по которому пользователь сам сможет выбирать, что...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru