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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2012, 21:42   #1
vovik93
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 47
По умолчанию Не выводится текст в Label

Есть некий метод, который заполняет грид данными и это занимает
несколько секунд(так как данных много), естестве но программа
во время этого зависает. И чтоб пользователь не думал что программа
зависла из-за неполадок, я хочу выводить в какой то лейбел что "идет загрузка".
Делаю так: перед вызовом метода заполнения пишу в лейбел текст, а после метода
стираю его, но лейбел так и остается пустым(А если вместо лейбела меседж боксы
то все работает - один выводится перед стартом, второй по за вершению).
Подскажите почему так?

Последний раз редактировалось vovik93; 11.10.2012 в 21:50.
vovik93 вне форума Ответить с цитированием
Старый 11.10.2012, 21:59   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

код в студию!
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 11.10.2012, 22:07   #3
vovik93
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
код в студию!
Код:
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            Label1.text = "Loading...";
            //MessageBox.Show("start");

            ReadXML(urlForXml);
            AddDataInGrid();

            timer1.Start();
            Label1.text = "";
            //MessageBox.Show("stop");
        }
vovik93 вне форума Ответить с цитированием
Старый 11.10.2012, 22:56   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Предполагаю 2 варианта:
1) ReadXML(urlForXml); и AddDataInGrid(); выполняются так быстро, что вы не успеваете увидеть надпись
2) ReadXML(urlForXml); AddDataInGrid(); выполняются долго, но надпись на экране не обновляется, т.к. основной поток занят загрузкой XML и добавлением данных в грид.
Решение аналогично вашей другой теме: использовать отдельный поток под загрузку данных
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 12.10.2012, 09:19   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Luuzuk +1

добавлю ещё один вариант...
проверьте такой код:
Код:
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            Label1.text = "Loading...";

            Application.DoEvents();

            //MessageBox.Show("start");

            ReadXML(urlForXml);
            AddDataInGrid();

            timer1.Start();
            Label1.text = "";
            //MessageBox.Show("stop");
        }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.10.2012, 14:13   #6
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Создаешь поток BackgroundWorker и можешь в этом же потоке использовать метод this.Invoker для изменения текста в лейбле если твои операции занимают долгое время.
coNsept вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не выводится текст парсинга bulldog5293 Работа с сетью в Delphi 0 30.04.2011 18:26
Не выводится текст статьи из БД (PHP,MySQL) Mysqler Помощь студентам 1 19.05.2010 21:26
Текст в Label и cfg фаил. 54rus Помощь студентам 7 27.07.2009 10:38
Текст из label Domoffou Win Api 1 07.01.2008 09:49