Как сделать обновление текстового поля, когда событие происходит не после завершения кода? - PullRequest
0 голосов
/ 01 декабря 2009
 private void Discogs_NewStatusMessage(object sender, NewStatusMessageEventArgs e)
    {
        textBox1.Text += e.Message() + "\r\n";
    }

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

Все сообщения появляются в текстовом поле, но только после завершения кода класса.

Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 01 декабря 2009

Вы должны поместить операцию в отдельный поток и затем вызывать поток пользовательского интерфейса, когда будет достигнут прогресс. См. этот пост о том, как добиться отдельных тем.

2 голосов
/ 01 декабря 2009

Необходимо попытаться обновить текстовое поле, чтобы пользовательский интерфейс обновился с изменениями.

0 голосов
/ 01 декабря 2009

Событием, которое вы можете использовать, является обработчик событий TextChanged, вот пример, когда текстовое поле пусто, фон становится малиновым, когда оно заполнено, фон меняется на цвет по умолчанию:

private void textBox1_TextChanged(object sender, EventArgs e){
    if (this.textBox1.TextLength == 0)
    {
       this.textBox1.BackColor = System.Drawing.Color.Crimson;
    }
    else
    {
       this.textBox1.BackColor = System.Drawing.SystemColors.Window;
    }
}

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

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...