Что может повредить winforms progressBar? - PullRequest
1 голос
/ 24 марта 2011

ProgressBar иногда останавливает обновление (вместе с остальным графическим интерфейсом) и пропускает прямоугольное сечение. Это было замечено только периодически на целевом планшетном устройстве windows-ce 5.0, но не на windows 7. progressBar.Refresh () после изменения progressBar.Maximum не помогает. Точная последовательность его возникновения неизвестна, и я не могу запустить отладчик на целевом устройстве (я использую платформу ПК для отладки приложения, но эта проблема никогда не возникала при запуске приложения на ПК). Что может быть причиной этого? Индикатор выполнения и связанная с ним метка обновляются таким образом.

progressBar.Value = Status.value;
label.Text = Status.value;

метка. Текст всегда правильный.

Ответы [ 3 ]

1 голос
/ 24 марта 2011

Вы можете передавать данные в элемент управления Label, особенно что-то вроде

debugLabel.Text = progressBar1.Value;

Это поможет вам определить, какие значения индикатора выполнения не отображаются, и если это последовательно одинаковые или случайные значения.

Случайные значения заставили бы меня думать, что графический интерфейс слишком занят, чтобы отколоться.

Одинаковые значения заставляют меня думать о плохих пикселях на устройстве.

У вас есть еще данные?

0 голосов
/ 27 апреля 2011

Основной причиной является внесение изменений в графический интерфейс за пределами потока графического интерфейса. Фактическим решением было внесение всех изменений в индикатор выполнения в System.Windows.Forms.Timer.

0 голосов
/ 24 марта 2011

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

...