Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Изменение label.Text в диалоговом окне


Автор: Cxematex 28.4.2008, 22:48
Всем привет.
Проблема вот в чем:
После того как появилось главное окно приложения(например Form1) нужно сразу создать еще одно окно(например Form2)
и сделать так, что пользователь не сможет перейти к Form1, пока Form2 не будет закрыта.
Form2 содержит элемент label. Нужно чтоб label.Text изменялся, например показывал выполняемую операцию(Загрузка данных, Ожидание данных и т.д)

Пытался делать так:
Код

Form2 f= new Form2(this);
f.ShowDialog(this);


Изменение label.Text пытался делать в обработчике события Shown формы Form2(так как более подходящего ничего не нашел).
Но при таком подходе не отображаются элементы управления Form2.

Помогите плиз.  

Автор: mr.DUDA 29.4.2008, 08:52
ShowDialog можно вызвать без параметров, а label.Text менять к примеру в перекрытом методе Form2 OnLoad. Проверил на простом приложении - текст label на первой форме изменяется даже во время ShowDialog.

Автор: Cxematex 29.4.2008, 11:19
Цитата(mr.DUDA @ 29.4.2008,  08:52)
label.Text менять к примеру в перекрытом методе Form2 OnLoad. Проверил на простом приложении - текст label на первой форме изменяется даже во время ShowDialog.

label.Text нужно изменять на второй форме, которая вызываеться с помощью ShowDialog.



Автор: Любитель 29.4.2008, 15:05
А форму вторую ты откуда показываешь (всмысле где находится вышеприведённый код)? И что значит
Цитата(Cxematex @  28.4.2008,  22:48 Найти цитируемый пост)
Но при таком подходе не отображаются элементы управления Form2.

Всмысле как именно это выглядит?

Автор: Cxematex 29.4.2008, 20:12
Цитата(Любитель @ 29.4.2008,  15:05)
Всмысле как именно это выглядит?

Выглядит оно вот так:
http://ipicture.ru/
Не отображаются элементы управления...

Вообще вторую форму вызываю из обработчика события Shown первой формы. Пытался вызывать форму и по нажатию кнопки на первой форме, но результат был такой же.

Код

label.Text = "Загрузка данных№1....";
//любые события загрузки данных №1
label.Text = "Загрузка данных №2";
//любые события загрузки данных #2
...
//после всего закрываю вторую форму
this.Close();


Мне нужно чтобы был виден этот процесс на второй форме....

Автор: Dennnis 29.4.2008, 23:16
Может сначала еще один поток создать нужно, и в нем изменять label

Автор: Cxematex 30.4.2008, 00:10
Цитата(Dennnis @ 29.4.2008,  23:16)
Может сначала еще один поток создать нужно, и в нем изменять label

Спасибо за идею smile . Вроде все получилось что хотел smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)