Я программно добавил элемент управления RichTextBox в форму, но, похоже, у меня возникают проблемы при форматировании. Обратите внимание, что я вручную добавил элемент управления через GDI, но также столкнулся с теми же проблемами.RichTextBox не показывает форматирование до тех пор, пока текст не выбран
В основном происходит то, что мой элемент управления рисуется, но использует тот же исходный цвет фона, что и форма (хотя я указал вручную другой цвет). Элемент управления также отображается пустым после загрузки формы, однако я могу вручную щелкнуть мышью, чтобы получить курсор, где должен появиться текст «должен».
Если я нажимаю и перетаскиваю элемент управления, все мои тексты появляются со всем форматированием, которое я определил. Я понятия не имею, что это вызывает, но я попытался восстановить форму, обновить элемент управления, обновить элемент управления, но ничего не работает. Я также пробовал использовать .Text
, .SelectedText
и .AppendText
, а также .SelectionColor
и .SelectionBackColor
.
Мой код просто:
Dim rtb As RichTextBox = New RichTextBox
rtb.Location = New Point(94, 229)
rtb.Size = New Size(608, 46)
rtb.BackColor = Color.FromArgb(38, 38, 38)
rtb.ForeColor = Color.LightGray
rtb.AppendText(_ticket.ticket_lastcomment)
Me.Controls.Add(rtb)
Тем не менее он создает новый RichTextBox, который имеет тот же цвет, как форма (Color.Control) и пусто. Никакое форматирование не применяется к элементу управления, пока я не выделил текст вручную.
Я никогда раньше не сталкивался с этим.
UPDATE
После различных проб и ошибок и двигающейся коды, я пришел, чтобы найти, что кусок кода, препятствующий чертеж RichTextBox это:
Me.animator = New FormAnimator(Me, FormAnimator.AnimationMethod.Centre, FormAnimator.AnimationDirection.Right, 200)
применяет FormAnimator к форме, чтобы придать ей эффект при открытии. Удаление этого фрагмента кода позволяет RichTextBox правильно рисовать ..... странно.
при перемещении окна вокруг, не касаясь самого контроля Меняется управления на правой appereance? Если это так, у вас определенно есть проблема с перерисованием. Вы также можете попробовать .Invalidate() в текстовом поле. – WeSt
@WeSt Нет, нет. Он обновляется только при ручной подсветке текста. Кроме того, «.Invalidate» в текстовом поле, похоже, тоже не работает. – Riples