Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача данных между формами, CLR Windows Forms 
:(
    Опции темы
klifleopard
Дата 14.8.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.8.2009

Репутация: нет
Всего: нет



Здравствуйте уважаемые гуру с++. Возник вопрос, на который я нигде не могу найти ответ, подскажите пожалуйста. 
Программирую в VC++ 2008, создаю проект - Visual C++ -> CLR -> Приложение Windows Forms. Создаю еще одну форму в добавок к существующей. На Form1 и Form2 кидаю по TextBox и по одной кнопке. На Form1 нажимаю кнопку, открывается Form2. На Form2 вписываю произвольный текст. Теперь вопрос: Как по нажатию на кнопку на Form2 перенести текст в TextBox на родительскую форму? Буду благодарен за советы написанные в коде, потому что я новичек в программировании и просто советы воспринимаются сложно smile Вот мой код:

Form1.h
Код

#pragma once

namespace My11 {

    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: System::Windows::Forms::TextBox^  textBox1;

    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->textBox1 = (gcnew System::Windows::Forms::TextBox());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(65, 189);
            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);
            // 
            // textBox1
            // 
            this->textBox1->Location = System::Drawing::Point(61, 67);
            this->textBox1->Name = L"textBox1";
            this->textBox1->Size = System::Drawing::Size(100, 20);
            this->textBox1->TabIndex = 1;
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(292, 273);
            this->Controls->Add(this->textBox1);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
            this->PerformLayout();

        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e);
    };
}


Form1.cpp
Код

// Form1.cpp: главный файл проекта.

#include "stdafx.h"
#include "Form1.h"
#include "Form2.h"
using namespace My11;

System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e)
{
Form2^ fm2=gcnew Form2();
fm2->Show();
}
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    return 0;
}


Form2.h
код точно такой же как у Form1.h

Form2.cpp
Код

#include "StdAfx.h"
#include "Form2.h"

using namespace My11;

System::Void Form2::button1_Click(System::Object^  sender, System::EventArgs^  e)
{
//здесь должен быть код передачи значения this->textBox1->Text
//в форму Form1 в textBox1->Text
this->Close();
}

PM MAIL   Вверх
klifleopard
Дата 15.8.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.8.2009

Репутация: нет
Всего: нет



Итак готовое решение для Visual с++ 2008 проект CLR- Windows Forms, цена решения для меня 3 дня, даст Бог кому то поможет и сохранит время:

Код Form1.h:
Код
public: System::Windows::Forms::TextBox^  textBox1;//тут меняем с private на public чтобы был доступ из другой формы к этому объекту


Код Form2.h: без изменений

Код Form1.cpp:
Код

#include "stdafx.h"
#include "Form1.h" //подключаем заголовки
#include "Form2.h"
using namespace My11;

System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) //кнопка показывающая форму 2
{
Form2 ^frm2 = gcnew Form2(); //создаем объект типа Form2 - frm2
frm2->Owner=this; //тут присваиваем объекту frm2 свойству "Ссылка на родительский объект" адрес родительской формы
frm2->Show(); //делаем видимой форму 2 


Код Form2.cpp:
Код

#include "StdAfx.h"
#include "Form2.h"
#include "Form1.h"
using namespace My11;

System::Void Form2::button1_Click(System::Object^  sender, System::EventArgs^  e) //кнопка пересылки значения на родительскую форму
{
Form1 ^frm1 = (Form1 ^)this->Owner; //присваиваем объекту frm1 адрес родительской формы, который присвоили в Form1.cpp
frm1->textBox1->Text ="123";// тут меняем значения на форме 1
this->Close();
}


Тему можно закрывать, модераторам отдельная просьба - решение поместить в FAQ или закрепить тему чтобы другие не мучились, встречал много подобных тем на разных форумах и ни в одной решения не было.
PM MAIL   Вверх
Genrih1
Дата 16.8.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.11.2007

Репутация: нет
Всего: нет



Цитата

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

в FAQ давно висит такая тема, если бы вы почитали, то поняли бы, что ваше решение плохое.
http://forum.vingrad.ru/forum/topic-52713.html
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.