С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/86: Рейтинг темы: голосов - 86, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
1

Как из второго окна обратиться к элементам первого?

05.03.2012, 17:39. Показов 16040. Ответов 32
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Изучаю VS C++. Создал проект Windows Forms в среде CLR. Есть два окна, второе (Form_insert) вызывается из первого(Form1).
Из первого окна я спокойно управляю элементами во втором. А из второго окна обратиться к элементам первого не могу

Так вызываю второе окно
C++
1
2
3
4
5
6
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e)
    {
        Form_insert^ nwDlg = gcnew Form_insert;
        nwDlg->set_text("eee"); //записываю текст в textBox1 второго окна через public метод
        nwDlg->Show(this);
    }
Из второго окна пытался управлять так:
C++
1
2
3
4
5
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    {
        Form^ frm = this->Owner;
        frm->textBox1->Text = "dd";
    }
Ошибка: textBox1: не является членом "System::Windows::Forms::Form" - понятно

или так:
C++
1
2
3
4
5
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    {
        Form1^ frm;
        frm->textBox1->Text = "dd";
    }
Ошибка: Form1: необъявленный идентификатор - почему во второй форме компилятор не понимает класс Form1? Хотя в певой форме я создавал экземпляр класса Form_insert и компилятор не ругался.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2012, 17:39
Ответы с готовыми решениями:

Массив. Элементы второго кратны 3 элементам первого массива
Доброго времени суток имеется фрагмент : begin Assign(m1,imf1);rewrite (m1);...

Элементы первого массива прибавить к элементам второго и образовать третий
$db=new mysql_conns (); $sqlres=$db->my_mysql_select ('select Power, Agility, Rage, Health,...

Как из первого класса достучаться до объекта второго, а из второго до метода первого?
Есть два класса. Как можно из drawCircle достучаться до x,y,R, и из DrawNCirles дстучаться до...

Запуск второго консольного окна из первого
Задача такая Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой...

32
74 / 54 / 12
Регистрация: 20.02.2012
Сообщений: 239
05.03.2012, 17:41 2
dopton, а вы сослались на модуль первой формы? То есть использовали типа #include "Form_insert.h".
0
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
05.03.2012, 21:05  [ТС] 3
В модуле первой формы я ссылаюсь на вторую. Со второй на первую не ссылаюсь, иначе компилятор в заголовочном файле первой формы не понимает класс Form_insert
C++
1
2
3
4
5
6
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e)
         {
             Form_insert^ nwDlg = gcnew Form_insert;
             nwDlg->set_text("eee");
             nwDlg->Show(this);
         }
Ошибки:
error C2065: Form_insert: необъявленный идентификатор
error C2065: nwDlg: необъявленный идентификатор
error C2061: синтаксическая ошибка: идентификатор "Form_insert"
error C2065: nwDlg: необъявленный идентификатор
error C2227: выражение слева от "->set_text" должно указывать на тип класса, структуры или объединения либо на универсальный тип
error C2065: nwDlg: необъявленный идентификатор
error C2227: выражение слева от "->Show" должно указывать на тип класса, структуры или объединения либо на универсальный тип

Добавлено через 12 минут
Цитата Сообщение от dopton Посмотреть сообщение
Из второго окна пытался управлять так:
C++
1
2
3
4
5
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    {
        Form^ frm = this->Owner;
        frm->textBox1->Text = "dd";
    }
Ошибка: textBox1: не является членом "System::Windows::Forms::Form" - понятно

или так:
C++
1
2
3
4
5
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    {
        Form1^ frm;
        frm->textBox1->Text = "dd";
    }
Ошибка: Form1: необъявленный идентификатор - почему во второй форме компилятор не понимает класс Form1? Хотя в певой форме я создавал экземпляр класса Form_insert и компилятор не ругался.
В этих случаях элемент textBox1 я объявляю в public секции класса Form1
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.03.2012, 20:05 4
Лучший ответ Сообщение было отмечено как решение

Решение

Объявите в Form2 скажем TextBox^ posilochka (public!)
В Form1 какй-то public: textBox11
После запуска Form2 child1 в Form1 напишите:
C++
1
this->child1->posilochka=this->textBox11;
теперь все что пишется в posilochka в Form2 попадает Form1 в textBox11.
Это "хулиганство", но, как говорится - дёшево и сердито!
//****************************************************//
Если хотите по-другому "правильнее" и сложнее вот ещё вариант:
Сделаем изменение текста в форме1 из формы2:
1) Имеются 2 формы - Form1 и Form2, на Form1 располагаются Button (button1, будет открывать вторую форму) и Label (label1, здесь будем менять текст). На Form2 - button1, по нажатию на которую будет происходить смена текста в label1.
2) Так как нам из первой формы нужно иметь доступ ко второй, а из второй к первой, то будет возникать проблема перекрестных ссылок (когда Form1.h ссылается на Form2.h, который в свою очередь опять ссылается на Form1.h). Для того, чтобы этого избежать, код первой формы (Form1), который будет иметь доступ ко второй форме (Form2) мы вынесем из h-файла в cpp файл.
Таким образом нужно создать файл Form1.cpp. (source files-> правая кнопка->создать)
3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1:
C++
1
2
3
4
public: void Set(String^ text)
    {
        label1->Text = text;
    }
4) В файле Form2.h подключаем Form1.h:
C++
1
#include "Form1.h"
и создаем конструктор, который будет принимать и сохранять ссылку на первую форму для дальнейшего использования:
C++
1
2
3
4
5
 Form2(Form1^ parent)
    {
        InitializeComponent();      
        parentForm = parent;
    }
//...
C++
1
  private: Form1^ parentForm;
По клику кнопки, будем вызывать метод Set родительской формы:
C++
1
2
3
 private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        parentForm->Set("hello from form2");
    }
5) Осталось в первой форме сделать открытие второй формы. Для этого из Form1.h обработчик нажатия кнопки переносим в Form1.cpp, а в h-файле оставляем только его объявление:
Form1.cpp:
C++
1
2
3
4
5
6
7
8
9
10
#include "StdAfx.h"
    #include "Form1.h"
    #include "Form2.h"
    namespace testApp {
        System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
            Form2^ f2 = gcnew Form2(this);
            f2->Show();
            this->Hide();
        }
    }
В Form1.h (#include "Form2.h" там не нужен, - не будет работать) вставляем только:
C++
1
   private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e);
На этом все. Можно скомпилировать и проверить проект.
Еще можно посмотреть обсуждение на зарубежном форуме по этой же проблеме - Submitting Form2 and changing Form1 by it's value.
К сожалению ссылка потерялась но по Submitting Form2 and changing Form1 by it's value
Google выдаст Вам ссыдку на MSDN.
4
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
07.03.2012, 22:33  [ТС] 5
Спасибо, заработало! Воспользовался "правильным" вариантом
0
5 / 5 / 0
Регистрация: 27.03.2012
Сообщений: 21
29.03.2012, 13:03 6
IGPIGP,
скажите как можно объявить переменные во 2 офрме
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.03.2012, 15:10 7
Цитата Сообщение от Роман_93 Посмотреть сообщение
скажите как можно объявить переменные во 2 офрме
Переменные 2 офрмы объявляются обыкновенно как и первой. Вы имеете ввиду переменные других файлов и в том числе первой формы?
0
5 / 5 / 0
Регистрация: 27.03.2012
Сообщений: 21
29.03.2012, 15:32 8
у меня есть Form1 в ней ессть кнопка открывающая Form2
когда я пишу допустим int a в Form1 то ошибок нет и все нормально работает а если я пишу в Form2 int b то появляется ошибка переопределения Error LNK2005
есле в Form1 удалить #include "Form2.h" то ошибок не будет но Form2 не откроется
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.03.2012, 15:52 9
Цитата Сообщение от Роман_93 Посмотреть сообщение
когда я пишу допустим int a в Form1 то ошибок нет и все нормально работает а если я пишу в Form2 int b то
Значит в Form1 уже объявлена int b. Два раза объявлять одно и тоже имя компилятор не разрешает и это нормально. Вы же сами вставили Form2 в Form1, по-этому не используйте её имён для объявлений в Form2. В ссылке, что я предложил есть всё, что бы передавать данные между формами, но способов как это делать ещё много. Попробуйте объяснить кратко, что Вы не поняли.
0
5 / 5 / 0
Регистрация: 27.03.2012
Сообщений: 21
29.03.2012, 15:58 10
переменная объявленна только в Form2
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.03.2012, 16:10 11
Цитата Сообщение от Роман_93 Посмотреть сообщение
переменная объявленна только в Form2
Чудес не бывает - наберите просто b в Form1 и посмотрите где она определена (наведите курсор -> правая кнопка -> Go to deffinition) Совет: не используйте имен типа a, b, c, x кроме локальных. Имя не занимает памяти по-этому лучше:
int myBolshoyBizonKotoriyGivetZaBugrom=0;
если уже нет выхода можно локализовать конфликтующее имя в своём пространстве имён, но у Вас похоже не тот случай.
0
4 / 4 / 0
Регистрация: 08.11.2011
Сообщений: 137
16.05.2012, 00:17 12
Цитата Сообщение от dopton Посмотреть сообщение
Спасибо, заработало! Воспользовался "правильным" вариантом
Оставьте целый код программы,пожалуйста)
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
22.02.2013, 10:30 13
IGPIGP,
делала как вы написали, но у меня ошибка Form2: необъявленный идентификатор
по заданию во второй форме в textbox вводится слово и добавляется в первую форму в listbox
сделала так
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
// Lab1.cpp: главный файл проекта.
 
#include "stdafx.h"
#include "Form1.h"
#include "Form2.h"
    namespace testApp {
            System::Void button5_Click(System::Object^  sender, System::EventArgs^  e) {
            Form2^ f2 = gcnew Form2();
            f2->Show();
        }
    }
 
using namespace Lab1;
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
 
    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    return 0;
}
к Form1.h добавила:
C++
1
2
3
4
5
    private: System::Void button5_Click(System::Object^  sender, System::EventArgs^  e); //открытие 2-ой формы
    public: void Set(String^ text)
    {
        listBox1->Items->Add(text);
    }
к Form2.h подключила Form1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public:
        Form2(Form1^ parent)
        {
 
            InitializeComponent();
            parentForm = parent;
        }
....
 
private:
        /// <summary>
        /// Требуется переменная конструктора.
        Form1^ parentForm;
 
public: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
            // if (radioButton1->Checked==true) frm->listBox1->Items->Add(textBox1->Text);
            // else frm->listBox2->Items->Add(textBox1->Text);
            parentForm->Set(textBox1->Text);
         }
1>------ Построение начато: проект: Lab1, Конфигурация: Debug Win32 ------
1> Form2.cpp
1> Lab1.cpp
1>Lab1.cpp(8): error C2065: Form2: необъявленный идентификатор
1>Lab1.cpp(8): error C2065: f2: необъявленный идентификатор
1>Lab1.cpp(8): error C2061: синтаксическая ошибка: идентификатор "Form2"
1>Lab1.cpp(9): error C2065: f2: необъявленный идентификатор
1>Lab1.cpp(9): error C2227: выражение слева от "->Show" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1> тип: 'unknown-type'
подскажите пожалуйста, что сделала не так?
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.02.2013, 12:49 14
darya17, Вы сделали иначе. Прочтите всё внимательно. Начните всё с пустой формы и сделайте как написано. Дело тут не в сообразительности, а в относительной сложности, для человека который это делает впервые.
1. В Main не нужно подключать 2 формы. Туда подключается главная, стартовая Form1 (обычно).
2. Во второй форме Вы ничего не подключили.
Подключить это вставить в начало файла директивой #include "Form1.h".
Иначе имя Form1 в файле Form2.h -ничего компилятору не говорит. Об этом он и горюет.
Итак сосредоточьтесь, начните сначала и сделайте всё пошагово. Особенно внимательно вычитайте диалоги о ошибках предшественников. Я часто даю ссылки на эти темы потому, что подобные ошибки это вечные грабли для новичков.
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
22.02.2013, 14:09 15
IGPIGP,
перед самим кодом я написала к Form2.h подключила Form1.h.
создала пустую форму как Вы и сказали, но к сожалению та же ошибка.
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
22.02.2013, 14:23 16
darya17, ошибка здесь
не Form1 ,
а просто Form - это вам не С#
Это не правильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
public:
        Form2(Form1^ parent)
        {
 
            InitializeComponent();
            parentForm = parent;
        }
....
 
private:
        /// <summary>
        /// Требуется переменная конструктора.
        Form1^ parentForm;
нужно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
public:
        Form2(Form^ paramform)
        {
 
            InitializeComponent();
            form1 = paramform;
        }
....
 
private:
        /// <summary>
        /// Требуется переменная конструктора.
        Form^ form1;
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
22.02.2013, 15:08 17
MrCold,
исправила, но не очень помогло, теперь ругается на метод Set... посмотрите пожалуйста, может еще где то не то пишу.
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
// f.cpp: главный файл проекта.
 
#include "stdafx.h"
#include "Form1.h"
#include "Form2.h"
    namespace testApp {
        System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
            Form2^ f2 = gcnew Form2(this);
            f2->Show();
        }
    }
 
using namespace f;
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
 
    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    return 0;
}
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
#pragma once
 
namespace f {
 
    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: добавьте код конструктора
            //
        }
        public: void Set(String^ text)
    {
        listBox1->Items->Add(text);
    }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::ListBox^  listBox1;
    protected: 
    private: System::Windows::Forms::Button^  button1;
       
        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e);
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->listBox1 = (gcnew System::Windows::Forms::ListBox());
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // listBox1
        
            // 
            // button1
            // 
            
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 262);
            this->Controls->Add(this->button1);
            this->Controls->Add(this->listBox1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
 
        }
#pragma endregion
    
    };
}
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
#pragma once
#include "Form1.h"
 
 
namespace f {
 
    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(Form^ parent)
    {
        InitializeComponent();      
        form1 = parent;
    }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form2()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::TextBox^  textBox1;
    private: System::Windows::Forms::Button^  button1;
    protected: 
 
    private:
        /// <summary>
        Form^ form1;
 
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->textBox1 = (gcnew System::Windows::Forms::TextBox());
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // textBox1
            // 
            // 
            // button1
            // 
            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, 262);
            this->Controls->Add(this->button1);
            this->Controls->Add(this->textBox1);
            this->Name = L"Form2";
            this->Text = L"Form2";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 form1->Set(textBox1->Text);
             }
    };
}
1> f.cpp
1>c:\users\сергей\documents\visual studio 2010\projects\f\f\Form2.h(92): error C2039: Set: не является членом "System::Windows::Forms::Form"
1> c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.windows.forms.dll: см. объявление "System::Windows::Forms::Form"
1>f.cpp(8): error C2882: Form2: недопустимое использование идентификатора пространства имен в выражении
1>f.cpp(8): error C2065: f2: необъявленный идентификатор
1>f.cpp(8): error C2061: синтаксическая ошибка: идентификатор "Form2"
1>f.cpp(9): error C2065: f2: необъявленный идентификатор
1>f.cpp(9): error C2227: выражение слева от "->Show" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1> тип: 'unknown-type'
1> Form2.cpp
1>c:\users\сергей\documents\visual studio 2010\projects\f\f\Form2.h(92): error C2039: Set: не является членом "System::Windows::Forms::Form"
1> c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.windows.forms.dll: см. объявление "System::Windows::Forms::Form"
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.02.2013, 15:40 18
C++
1
2
3
4
5
6
7
 
f.cpp: главный файл проекта.
 
#include "stdafx.h"
#include "Form1.h"
#include "Form2.h"
    namespace testApp {
Повторю, посмотрите темы:
Как сделать так, чтобы разные файлы могли видеть друг друга?
Ошибки при вызове форм - Syntax error
Как добавить кнопки на вторую форму?
И сделайте всё сначала. Вы повторяете те же ошибки. Например namespace testApp это пространство моего проекта, а Вам нужно Ваше f если я понимаю верно. Хотя оно может быть любое, но Ваше, myLab2 например.
И ещё дескриптор form1, в этом случае я бы присвоил так:
C++
1
form1= dynamic_cast<Form1^>(parent);
Постройте новый проект и посмотрите примеры.

Не по теме:

darya17, в этой теме всё уже произошло. Почему бы не общаться в своей теме. Ведь это трудновато читать другим будет. ;)

0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
22.02.2013, 16:02 19
Цитата Сообщение от darya17 Посмотреть сообщение
по заданию во второй форме в textbox вводится слово и добавляется в первую форму в listbox
Если кроме Листбокса во второй форме ничего не нужно тогда так ( и метод Set не нужен )

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
#pragma once
#include "Form2.h"
/////////////////
 
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            form2  = gcnew Form2(listBox1);
        }
        private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::ListBox^  listBox1;
 
    Form2 ^ form2;
    private: void button1_Click( Object^ sender, EventArgs^ e)
             {
              
               form2->Show();
             }
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
public ref class Form2 : public System::Windows::Forms::Form
    {
    public:
        Form2(ListBox^ paramlistBox)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
             listBox = paramlistBox;
        }
 
 
            private: System::Windows::Forms::ListBox^ listBox;
                        private: System::Windows::Forms::TextBox^  textBox1;
                    private: System::Windows::Forms::Button^  button1;
 
 
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
             {
                 if (textBox1->Text->Length > 0 )
                 {
                          listBox->Items->Add(textBox1->Text);              
                 }
                  else
                        MessageBox::Show("Введите данные !!!");
             }
1
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.02.2013, 16:05 20
Цитата Сообщение от MrCold Посмотреть сообщение
listBox->Items->Add(textBox1->Text);
listBox придется объявить public: в Form1 ?
0
22.02.2013, 16:05
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2013, 16:05
Помогаю со студенческими работами здесь

Найти хендл второго (а не первого) окна по заданному классу
Помогите пожалуйста обшарил весь интернет и не нашел ответа как мне вписать строку во второе поле...

Составить 3-й массив, каждый элемент которого будет равен четным элементам первого массива и нечетным второго массива
Даны 2 одномерных массива, составить 3 массив, каждый элемент которого будет равен четным элементам...

Как обратиться к элементам ArrayList?
Как обратиться к элементам AraayList !?!? привожу код в аттаче!

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

Как обратиться к элементам формы по имени?
Здравствуйте. Есть 5 радиобуттонов, с названиями radioButton1 radioButton2 radioButton3...

Как обратиться к отмеченным элементам ListView
У ListView стоит параметр отображать чек боксы. Задача скопировать отмеченные файлы. что то...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru