Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2012, 01:48   #1
SwitchOFF
Пользователь
 
Регистрация: 13.08.2009
Сообщений: 25
По умолчанию Передача данных между формами

Всем привет!
Не могу решить очень простую задачу.Помогите пожалуйста =)

Есть 2 формы

Первая:

Код:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog();
        }

        public void test()
        {
            this.Text="form_text";
            MessageBox.Show("mess");
        }
    }
Вторая:

Код:
public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            Form1 f1 = new Form1();
            f1.Text = "asd";
            
            f1.test();
         }
    }
При закрытии формы №2 должна происходить смена текста. Причём дважды.Однако, этого не происходит, но в то же время, MessageBox отображается при вызове функции.
Подскажите, как сделать правильно ?
SwitchOFF вне форума Ответить с цитированием
Старый 29.04.2012, 03:26   #2
Al!
Новичок
Джуниор
 
Регистрация: 29.04.2012
Сообщений: 1
По умолчанию

В Form1 нужно добавить одну строчку

Код:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.f1 = this; // Установить ссылку
            f2.ShowDialog();
        }

        public void test()
        {
            this.Text="form_text";
            MessageBox.Show("mess");
        }
    }
А в Form2 одну добавить и одну удалить

Код:
public partial class Form2 : Form
    {
        public Form1 f1; //Добавить ссылку на вызывающее окно
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Form1 f1 = new Form1(); //Не создавать новый экземпляр
            f1.Text = "asd";  //Использовать ссылку, установленную в вызывающем окне
            
            f1.test();
         }
    }
Должно сработать.
Al! вне форума Ответить с цитированием
Старый 01.05.2012, 01:01   #3
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

На мой взгляд лучше использовать ParentForm или internal делегат какой-нить примеры есть тут http://stackoverflow.com/a/4588048
Reskov вне форума Ответить с цитированием
Старый 12.05.2012, 19:25   #4
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

у меня примерно тот же вопрос.
ситуация такая: две формы также работают между собой, т.е. внутри класса каждой формы используются объекты другой. Однако если допустим одна форма инклюдится первой, то вторую форму в первой не видно, говорит, что класса второй формы не существует
подскажите, пожалуйста, как поступить?
Visual Studio 2008
Приложение Windows Forms
krow7 вне форума Ответить с цитированием
Старый 13.05.2012, 11:56   #5
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

Через композицию пробовали инклюдить?
Код:
public partial class Form1 : Form
    {
        public Form2 form;
        private void button1_Click(object sender, EventArgs e)
        {
            var form = new Form2 { form = this };
        }...
}
public partial class Form2 : Form
    {
        public Form1 form { get; set; }
Reskov вне форума Ответить с цитированием
Старый 13.05.2012, 14:27   #6
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

я пишу на с++, а тут шарп, поэтому немного непонятно
зашел в этот тред, потому что проблема схожая.

Когда мы пишем вот так:
Код:
public partial class Form1 : Form
    {
        public Form2 form;
        ...
    }
На данный момент ведь класс Form2 не определен. Компилятор это поймет?
Я просто пробовал так писать, но он говорит, что Form2 неизвестный идентификатор
krow7 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных между модулями. C++ paravoz1k Помощь студентам 3 13.12.2011 11:12
Передача данных между формами! MyXa Общие вопросы .NET 1 03.02.2011 18:15
Передача данных между класами Alena-b-v Общие вопросы C/C++ 3 01.09.2010 18:32
Передача данных между формами katbka Общие вопросы C/C++ 1 16.05.2010 20:45
передача данных между процедурами Неясыть Общие вопросы Delphi 15 18.11.2007 12:54