Проблема с очисткой многострочного текстового поля в приложении WinForms - PullRequest
1 голос
/ 06 февраля 2012

У меня есть многострочное TextBox в моем приложении, текст которого я хочу очистить.

Проблема в том, что когда я очищаю текст, используя

textBox.Text = "" 
or 
textBox.Clear()

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

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

Я попытался вызвать Refresh на элементе управления и в текстовом поле, чтобы вызвать перерисовку, но это не работает.

Есть ли другой способвызвать событие перекрасить, чтобы решить эту проблему?Не уверен, что я делаю не так здесь.

РЕДАКТИРОВАТЬ:

Вот пример кода.Метод ShowForm вызывается для восстановления минимизированной формы.

    public static void ShowForm()
    {
       if (!myForm.Visible)
       {
          myForm.PopulateForm();
          myForm.Show();
          myForm.Activate();
          myForm.WindowState = FormWindowState.Normal;
       }
    }

и внутри PopulateForm (который является методом myForm), я очищаю текст в текстовом поле:

   public void PopulateForm()
   {
       this.myControl.myTextBox.Clear(); 
   }

this.myControl - это пользовательский элемент управления, которыйсодержит текстовое поле

1 Ответ

0 голосов
/ 07 февраля 2012

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

После установки значения true текстовое поле отображается правильно.

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