Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330

Передать данные из 1 формы во 2 форму и обратно используя вспомогательный файл

18.05.2015, 16:01. Показов 919. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такая. Есть 2 формы, на каждой форме есть checkBox1 и 1 button1.
При нажатие на button1 первой формы, должна открыться 2 форма и туда должно передаться информация о состоянии checkBox1 1 формы. т.е. если на 1 форме активен checkBox1, то и во 2 должен быть активен.
При нажатие на button1 второй формы эта форма должна быть закрыта и 1 форме должно передаться состояние checkBox1 второй формы, т.е. если мы на 2 форме изменили состояние checkBox1, то это должно отобразиться в checkBox1 1 формы.

Решил сделать это используя в качестве "передатчика" состояний дополнительный 3 файл .h.
Т.е. определил в 1 форме и во 2 форме этот файл и хочу туда заносить и вынимать данные о двух формах.

Содержимое форм
MyForm.h
Кликните здесь для просмотра всего текста
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
#pragma once
#include "MyForm1.h"
#include "peremen.h"
namespace Проект4 {
 
    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>
    /// Сводка для MyForm
    /// </summary>
    public ref class MyForm : public System::Windows::Forms::Form
    {
    public:
        MyForm(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~MyForm()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
 
 
    private: System::Windows::Forms::CheckBox^  checkBox1;
    protected:
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->checkBox1 = (gcnew System::Windows::Forms::CheckBox());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(72, 102);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(265, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"Запустить 2 форму";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click);
            // 
            // checkBox1
            // 
            this->checkBox1->AutoSize = true;
            this->checkBox1->Location = System::Drawing::Point(162, 79);
            this->checkBox1->Name = L"checkBox1";
            this->checkBox1->Size = System::Drawing::Size(80, 17);
            this->checkBox1->TabIndex = 3;
            this->checkBox1->Text = L"checkBox1";
            this->checkBox1->UseVisualStyleBackColor = true;
            // 
            // MyForm
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(461, 274);
            this->Controls->Add(this->checkBox1);
            this->Controls->Add(this->button1);
            this->Name = L"MyForm";
            this->Text = L"MyForm";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        MyForm1 ^ Dialog = gcnew MyForm1();
        Dialog->Owner = this; //Передаём вновь созданной форме её владельца.
        Dialog->Show();
 
        peremen::svalue = checkBox1->Checked;
    }
    };
}


MyForm1.h
Кликните здесь для просмотра всего текста
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
#pragma once
#include "peremen.h"
namespace Проект4 {
 
    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>
    /// Сводка для MyForm1
    /// </summary>
    public ref class MyForm1 : public System::Windows::Forms::Form
    {
    public:
        MyForm1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~MyForm1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::CheckBox^  checkBox1;
    protected:
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->checkBox1 = (gcnew System::Windows::Forms::CheckBox());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(63, 102);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(170, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"Сохранить изменения";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &MyForm1::button1_Click);
            // 
            // checkBox1
            // 
            this->checkBox1->AutoSize = true;
            this->checkBox1->Location = System::Drawing::Point(99, 79);
            this->checkBox1->Name = L"checkBox1";
            this->checkBox1->Size = System::Drawing::Size(80, 17);
            this->checkBox1->TabIndex = 1;
            this->checkBox1->Text = L"checkBox1";
            this->checkBox1->UseVisualStyleBackColor = true;
            // 
            // MyForm1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 261);
            this->Controls->Add(this->checkBox1);
            this->Controls->Add(this->button1);
            this->Name = L"MyForm1";
            this->Text = L"MyForm1";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 //Проект4::peremen::svalue = 1;
                 //peremen::svalue = 1;
    }
    };
}


дополнительный файл peremen.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
 
 
namespace Проект4 {
 
 
 
    class peremen
    {
    public:
 
        static bool svalue;
        
    };
    /*
    public ref class per : public System::Windows::Forms::Form
    {
    public static extern bool Beep(int freq, int duration);
    String^ a;
    };
    */
};


Но сразу столкнулся с проблемой. Не получается передать данные о состояние checkBox1 1 формы в peremen.h.
Компилятор выдает ошибки:
Кликните здесь для просмотра всего текста
1>------ Сборка начата: проект: Проект4, Конфигурация: Debug Win32 ------
1> MyForm.cpp
1> MyForm1.cpp
1> Создание кода...
1>MyForm.obj : error LNK2020: эхЁрчЁх°хээр* ыхъёхьр (0A0004A6) "public: static int ╧ЁюхъЄ4:eremen::a" (?a@peremen@╧ЁюхъЄ4@@2HA)
1>MyForm.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""public: static int ╧ЁюхъЄ4:eremen::a" (?a@peremen@╧ЁюхъЄ4@@2HA)"
1>D:\ё++\Visual Studio 2013\╧ЁюхъЄ4\Debug\╧ЁюхъЄ4.exe : fatal error LNK1120: эхЁрчЁх°хээ√ї тэх°эшї ¤ыхьхэЄют: 2
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2015, 16:01
Ответы с готовыми решениями:

Как передать данные из одной формы другой, если формы вызываються через MDI форму?
Я создал MDI форму для которой добавил две toolstrip button вызывающие форму1 и форму2 внутри MDI формы. Форма1 служит для ввода данных....

Как передать данные из DataGridVew 1 формы в текстовые боксы 2 формы используя щелчок по гридвью
Привет друзья. Подскажите как решить данную проблему

Не получается передать данные из формы в форму
По коду, приложенному ниже, не получается передать данные из формы в форму. Помогите найти ощибку, Пожалуйста! Private Sub...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2015, 16:01
Помогаю со студенческими работами здесь

Как передать данные из формы 2 в форму 1?
Народ прошу помощи на форме1 есть 7 textBox, 2 comboBox, 1 maskedBox и 2 dat на второй форме datetimepicker. Как передать все данные из...

Не могу передать данные из формы в форму
Доброго времени суток) Передаю данные из формы 1: FormNewOrder fno = new FormNewOrder(); fno.Pasc = this.numericUpDown2.Text; ...

Как передать данные с формы на форму др сайта?
Имеется сайт...

Передать данные из формы авторизации в главную форму
Здравствуйте, столкнулся с такой проблемой. В проекте имеется форма авторизации которая создана по данному уроку от Volvo. int...

Как можно передать данные в форму, не используя ViewData и ViewBag
Здравствуйте! Возникли проблемы с типами ViewData и ViewBag. Как можно реализовать вызов методов, находящихся в контроллере, из формы? В...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru