Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 11.03.2019
Сообщений: 7

При попытке показа второй формы - class "test1::Form1" не содержит члена "button1_click"

12.03.2019, 21:45. Показов 4523. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер всем.

Немного предыстории
Учусь на специальности Энергетика Теплотехнологий и Газоснабжение. Настало время научно исследовательских работ и мне достался преподаватель, который попросил меня сделать виртуальный лабораторный стенд, так как настоящий цитата: "Показывает полную чушь" Вот я и полез осваивать С++

Исходя из поставленных задач, мне нужна 2ая форма, чтобы на ней отрисовывался график зависимости напора от подачи.
Чтобы показать вторую форму смотрел гайд здесь - Как открыть вторую форму?
До 5 шага все идет хорошо, все компилируется.
Но как только вставляю в Form1.cpp все идет не туда куда надо
C++
1
2
3
4
5
System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
    Form2^ f2 = gcnew Form2(this);
    f2->Show();
    this->Hide();
}
Ошибки:

Code
1
2
3
4
5
Код: E0289 отсутствуют экземпляры конструктора "test1::Form2::Form2", соответствующие списку аргументов 
test1 C:\Users\Talam\source\repos\test1\test1\Form1.cpp 20 типы аргументов: (test1::Form1 ^) 
Примечание: функцию "test1::Form2::Form2(test1::Form1 ^parent)" 
(объявлено в строке 46 из "C:\Users\Talam\source\repos\test1\test1\Form2.h") мог быть вызван, 
но не рассматривался, поскольку был недоступен
Code
1
2
Код:C2084 функция "void test1::Form1::button1_Click(System::Object ^,System::EventArgs ^)" уже имеет 
текст реализации  test1  c:\users\talam\source\repos\test1\test1\form1.cpp 19
Code
1
Код:C3767 test1::Form2::Form2: функции-кандидаты недоступны test1 С:\users\talam\source\repos\test1\test1\form1.cpp 20
Сам код:
Form1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "Form1.h"
#include "Form2.h"
 
using namespace test1; //name of your project
using namespace System;
using namespace System::Windows::Forms;
 
 
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
 
    Application::Run(gcnew Form1());
    return 0;
}
System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
    Form2^ f2 = gcnew Form2(this);
    f2->Show();
    this->Hide();
}
Form1.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
#pragma once
 
namespace test1 {
 
    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
    /// </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::Label^  label1;
    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->label1 = (gcnew System::Windows::Forms::Label());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(111, 107);
            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);
            // 
            // label1
            // 
            this->label1->AutoSize = true;
            this->label1->Location = System::Drawing::Point(45, 36);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(35, 13);
            this->label1->TabIndex = 1;
            this->label1->Text = L"label1";
            // 
            // Form1
            // 
            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->label1);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
 
    public: void Set(String^ text)
    {
        label1->Text = text;
    }
            
                
        
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    }
    };
}
Form2.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
#pragma once
#include "Form1.h"
namespace test1 {
 
    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>
    /// Сводка для Form2
    /// </summary>
    public ref class Form2 : public System::Windows::Forms::Form
    {
    public:
        Form2(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form2()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    protected:
 
    private:
        /// <summary>
        /// Обязательная переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
        Form2(Form1^ parent)
        {
            InitializeComponent();
            parentForm = parent;
        }
        //...
    private: Form1^ parentForm;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Требуемый метод для поддержки конструктора — не изменяйте 
        /// содержимое этого метода с помощью редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(69, 108);
            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, &Form2::button1_Click);
            // 
            // Form2
            // 
            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->button1);
            this->Name = L"Form2";
            this->Text = L"Form2";
            this->ResumeLayout(false);
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        parentForm->Text = "hello from form2";
    }
    };
}
Много гуглил, очень. И по поводу этой ошибки и по поводу других, что-то решалось, но не это.
Надеюсь на вашу помощь, заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2019, 21:45
Ответы с готовыми решениями:

Ошибка при попытке показа формы авторизации перед главной формой
Ув. форумчане, добрый день ! Возникла ошибка при дебаге программы при попытке создания формы авторизации перед главной формой....

'Form1" не содержит определения для "button1_Click". В чем ошибка?
После С++ мне как-то трудно разобраться с логикой классов в C# Windows Forms. Вот, например, здесь компилятор ругается на butto1_Click: ...

Как управлять из первой формы (Form1) компонентами второй формы (Form2) ?
Здравствуйте Как управлять из первой формы (Form1) компонентами второй формы (Form2) ? например если нажать на кнопку которая находится...

12
Злостный нарушитель
 Аватар для Verevkin
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
12.03.2019, 22:08
Цитата Сообщение от Talam Посмотреть сообщение
Много гуглил, очень.
Кто писал этот код?
0
1 / 1 / 0
Регистрация: 11.03.2019
Сообщений: 7
12.03.2019, 22:47  [ТС]
Какой именно? Там бОльшая часть автоматически создана в Visual Studio, и частичка из темы(ссылку дал)
Как открыть вторую форму?
0
1 / 1 / 0
Регистрация: 11.03.2019
Сообщений: 7
13.03.2019, 17:14  [ТС]
Извините, апну

Добавлено через 4 часа 35 минут
Изменил в Form1.cpp
Было:
C++
1
2
3
4
5
6
System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
    Form2^ f2 = gcnew Form2(this);
    f2->Show();
    this->Hide();
 
}
Стало:
C++
1
2
3
4
5
6
System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
    Form2^ f2 = (gcnew Form2());
    f2->Show();
    this->Hide();
 
}
Осталась только одна ошибка:
Code
1
error C2084: функция "void test1::Form1::button1_Click(System::Object ^,System::EventArgs ^)" уже имеет текст реализации
Погуглил, говорят надо поменять имя функции, меняю - вылезают новые ошибки

Добавлено через 13 минут
Покопался еще и понял что в Form1.h надо убрать скобки
Не так
C++
1
2
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    }
а вот так
C++
1
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
так как {} видимо тоже объявление, пустое но объявление
1
1 / 1 / 0
Регистрация: 11.03.2019
Сообщений: 7
13.03.2019, 17:36  [ТС]
Такое ощущение, что пишу сюда уже как в дневник
Что-то подправил, что-то удалил и вот что получилось
Форма открылась хорошо, но при попытке нажатия на кнопку во второй форме - вот
Миниатюры
При попытке показа второй формы - class "test1::Form1" не содержит члена "button1_click"   При попытке показа второй формы - class "test1::Form1" не содержит члена "button1_click"  
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.03.2019, 18:09
Цитата Сообщение от Talam Посмотреть сообщение
Код: E0289 отсутствуют экземпляры конструктора "test1::Form2::Form2", соответствующие списку аргументов
но вы же пытаетесь передать указатель на родителя
C++
1
Form2^ f2 = gcnew Form2(this);
а конструктора такого нет. Talam, если вы думаете, что для С++/cli не нужно понимать плюсы, это ошибка. Распространённая при том. Я вам положу "сокровищницу" по теме. Мне пришлось решать эту задачу изучая азы плюсов и это было не быстро и не безболезненно. Вам будет гораздо легче, но обещайте всё прочесть и попробовать. Обращайте внимания на все "мелочи" вроде пространств имён в разных файлах и пр.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
13.03.2019, 18:14
Talam, актуальный код показывайте или проект прикрепите.
0
1 / 1 / 0
Регистрация: 11.03.2019
Сообщений: 7
13.03.2019, 19:12  [ТС]
S_el, воть проект
Вложения
Тип файла: rar test1.rar (6.37 Мб, 9 просмотров)
0
1 / 1 / 0
Регистрация: 11.03.2019
Сообщений: 7
13.03.2019, 19:13  [ТС]
Я уже понял что надо их понимать, поэтому нашел на просторах лекции по ним, однако тяжко
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
13.03.2019, 20:06
Talam, так у вас вызывается конструктор без аргументов:
C#
1
Form2^ f2 = (gcnew Form2);
а надо вызвать правильный:
C#
1
Form2^ f2 = gcnew Form2(this);
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.03.2019, 21:23
Цитата Сообщение от S_el Посмотреть сообщение
а надо вызвать правильный:
Его же и определить нужно, ещё. Хотя я не всегда создавал окна с обратной ссылкой.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
13.03.2019, 21:31
Цитата Сообщение от IGPIGP Посмотреть сообщение
Его же и определить нужно, ещё.
Он определен, ТС выше прикрепил архив с обновленным кодом.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.03.2019, 21:32
Цитата Сообщение от S_el Посмотреть сообщение
Он определен, ТС выше прикрепил архив с обновленным кодом.
Пардон, я не видел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2019, 21:32
Помогаю со студенческими работами здесь

После показа второй формы скрыть первую
как сделать чтобы я запустил проект нажал на кнопку - появилась вторая форма,НО когда я закрыл первую форму то вторая НЕ закрывалась бы??

Ошибка : Class не содержит члена "getline" С++
При написании программы появилась ошибка : &quot;Error: class &quot;std::basic_ofstream&lt;char, std::char_traits&lt;char&gt;&gt;&quot; не содержит члена...

C++ class не содержит члена "getline"
C++ class не содержит члена &quot;getline&quot; помогите решить проблему вот код #include &lt;iostream&gt; #include &lt;fstream&gt; #include...

При выполнении программы(формы). Кнопка button1_Click перечеркнута красным крестиком
Добрый вечер. При выполнении программы(формы). Кнопка button1_Click перечеркнута красным крестиком. Кто знает, в чем проблема? using...

Class "std::pair<const int, Polymorph *>" не содержит члена "show"
Преподаватель поставил задачу реализовать мультикарту в Windows Forms, чтобы еще контейнер был полиморфным(целые значения, строки и...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru