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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обратиться к объекту другой формы, очень часто задаваемый вопрос 
V
    Опции темы
ivashkanet
Дата 23.4.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(ivashkanet @  23.4.2007,  09:03 Найти цитируемый пост)
Legolas, ИМХО, тут без внешнего менеджера форм не обойтись. 

Не, я глюканул  smile Можно:
Код

this.Hide();
new SecondForm.Show();
// если текущая форма главная в проекте, то ее закрывать нельзя, ибо закроется все приложение.
// поэтому следующую строчку придется убрать
this.Close(); 

PM MAIL WWW ICQ   Вверх
Legolas
Дата 23.4.2007, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вроде работает, но...

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

Как избежать этого?

Добавлено через 14 минут и 48 секунд
Всё, разобрался, спасибо!)
PM MAIL   Вверх
Legolas
Дата 30.5.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пытаюсь передать значение строки из одной формы в другую. 

Код

Form1 f1 = new Form1();
this.str = f1.fio;


Компилятор выдает ошибку, что str == null;

Ставлю breakpoint и вижу, что при работе в первой форме, значение fio="Фамилия", но при открытии второй формы это значение обнуляется (?) и str присваивается null. Подскажите как этого избежать.

Спасибо.

PM MAIL   Вверх
Exception
Дата 31.5.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Полностью код покажи.
Ты, наверное, создаёшь первую форму заново, а тебе надо считывать значение из уже существующего экземпляра smile .
PM   Вверх
Legolas
Дата 31.5.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



У меня две формы: Form1 и Form2. В Form1 есть richtextbox1. Я заношу инфу в richtextbox1, а затем эту инфу мне нужно передать в Form2 строку.

Form1:
Код

public void button1_Click(object sender, EventArgs e)
        {
               string fio = richtextbox1.Text;
               Form2 frm2 = new Form2();
               frm2.ShowDialog();
        }

Form2:
Код

public void button1_Click(object sender, EventArgs e)
       {
                string str;

                Form1 f1 = new Form1();
                this.str = f1.fio;
       }


При breakpoints в первой форме видно, что string fio = "Иванов", но при Debug'е второй формы strinf fio == null (?)





Это сообщение отредактировал(а) Legolas - 1.6.2007, 19:20
PM MAIL   Вверх
Exception
Дата 31.5.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А ты в принципе осознаёшь то, что делаешь?

Цитата(Legolas @  31.5.2007,  21:30 Найти цитируемый пост)
Form1 f1 = new Form1();


заново создаёт экземпляр формы (можешь бедиться, вызвав f1.Show()). Естественно, fio пусто.
Во-вторых, тебе нужно сохранить текст в поле, а ты сохраняешь его в переменной:

Цитата(Legolas @  31.5.2007,  21:30 Найти цитируемый пост)
string str = richtextbox1.Text;


(надо this.str)

Правильно передать в конструкторе при создании Form2 ссылку на экземпляр Form1 и обращаться к нему.
PM   Вверх
Legolas
Дата 31.5.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Правильно передать в конструкторе при создании Form2 ссылку на экземпляр Form1 и обращаться к нему. 


НЕ очень понимаю как это сделать...
PM MAIL   Вверх
Vasja_Pupkin
Дата 1.6.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ, такой вопрос по си шарпу: как обратиться к переменной из другого класса, т.е. мы имеем 2 формы на первой текст бох и кнопка, на второй текст бокс, при нажатии на кнопку на первой форме надо чтоб текст в текст боксе на 1 форме появлялся в текст боксе на 2 форме.
PM MAIL   Вверх
W1zArD
Дата 20.6.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



>как обратиться к переменной из другого класса
поставить перед переменной ключ. слово public
PM   Вверх
WinNet
Дата 15.7.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



К стати в mdi эти примеры не катят?! или я что то не так делаю...
Вот код:

Form3 

Код

    public void Audit()
        {
            if (textBox1.Text != "")
            {
                MessageBox.Show("Yes");
            }
        }


Form1 // MDI контейнер!
Код

        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            // Здесь нужно вызвать метод Audit()
            //Подскажите пожалуйста как это сделать???
        }

PM ICQ   Вверх
QryStaL
Дата 16.7.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


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

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



Код

((Form3)this.MDIChildren[0]).Audit()



--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
WinNet
Дата 17.7.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



СПАСИБО!  smile 
Все заработало с малениькой поправочкой:
Код

((Form3)this.ActiveMdiChild).Audit();

PM ICQ   Вверх
ToMaloi
Дата 28.8.2007, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Простите за повторения.Есть главная форма Form1.Считываем с нее textbox и открываем Form2, в Form2 обрабатываем textbox, а главную закрываем....закрывается и Form2???


Это в главной форме:

Form2 f2 = new Form2();
      f2.Show();
......
Close();


Что же мне написать во второй чтобы она не закрылась и достать во второй textbox из главной


Башкой подумал... smile 
все хорошо!!!

Это сообщение отредактировал(а) ToMaloi - 31.8.2007, 16:05
PM MAIL   Вверх
klet2007
Дата 10.9.2007, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Имеются  2 формы. В них button1,button2  и textBox1,textBox2 соответственно. По клику на кнопку button1 рткрывается форма2. 
Как быть, если нужно чтоба текст из textBox2 второй формы попадал в открытую уже форму1?
PM MAIL   Вверх
ivashkanet
Дата 10.9.2007, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



klet2007, перечитай тему
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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