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


Автор: Fobos 21.7.2009, 20:04
Пишу такой код:
Код

foreach (char bt in source)
 {
          data[k] = bt;
          MD5 md5Hasher = MD5.Create();
          byte[] test = md5Hasher.ComputeHash(Encoding.Default.GetBytes(data.ToString()));
          labl[1].Text = data.ToString();
 }

data - это строка, цикл очень большой, там идет перебор пароля. Так вот при таком виду цикла Label даже не отражается, хотя добавить паузу на 1 мл сек то сразу начинает отображаться:
Код

foreach (char bt in source)
 {
          data[k] = bt;
          MD5 md5Hasher = MD5.Create();
          byte[] test = md5Hasher.ComputeHash(Encoding.Default.GetBytes(data.ToString()));
          labl[1].Text = data.ToString();
          Thread.Sleep(1);
 }

Как я понимаю Label не успевает отрисовываться, как исправить это, чтобы отрисовывался без паузы??
                        

Автор: mr.Anderson 21.7.2009, 20:24
Посмотри метод Invalidate().

Автор: Fobos 21.7.2009, 20:37
Стало лучше, но не без глюков.

Автор: mr.Anderson 21.7.2009, 21:01
Fobos, не без глюков в каком плане? DoubleBuffered включи.

Автор: Любитель 21.7.2009, 21:08
Простое и лучшее решение - BackgroundWorker. Костыльное решение - Application.DoEvents.

Автор: Fobos 21.7.2009, 21:39
Пробовал и DoubleBuffered, глючит все равно, проявляяется это в виде: может отображение перебора вариантов строки начаться секунд через 10, а может вообще ничего не отображать, окно не реагирует и только потом, как подберет строку отобразить уже результат.

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