2014-09-15 1 views
1

Я программно добавил элемент управления 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 правильно рисовать ..... странно.

+0

при перемещении окна вокруг, не касаясь самого контроля Меняется управления на правой appereance? Если это так, у вас определенно есть проблема с перерисованием. Вы также можете попробовать .Invalidate() в текстовом поле. – WeSt

+0

@WeSt Нет, нет. Он обновляется только при ручной подсветке текста. Кроме того, «.Invalidate» в текстовом поле, похоже, тоже не работает. – Riples

ответ

0

Попробуйте это :)

rtb.rtf =_ticket.ticket_lastcomment 
+0

Это дает мне ошибку «Формат файла недействителен» – Riples

0

Я знаю его немного поздно для этого ответа, но это может помочь будущим посетителям. Все, что вам нужно сделать, это добавить сначала RichTextBox в форме, а затем установить текст:

Me.Controls.Add(rtb) 
rtb.AppendText(_ticket.ticket_lastcomment)