2016-01-24 4 views
0

Просто изменить цвет задней части всего richtextbox, но не на одном слове или символе, есть ли API или пользовательский элемент управления, который это делает. Я попытался сохранить слово doc в качестве rtf и скопировать элемент и вставить его в текстовое поле rich, и это сработало, но оно не работает так хорошо, как это можно сделать. Трудно или легко!Изменить цвет фона слова в richtextbox

ответ

2

я когда-то нужно, чтобы выделить текст в RichTextBox для VB6 проекта по времени назад .. и я использовал следующий модуль (не написанный мной)

Модуль:

Option Explicit 

Public Const LF_FACESIZE = 32 
Public Const WM_USER = &H400 
Public Const EM_SETCHARFORMAT = (WM_USER + 68) 
Public Const CFM_BACKCOLOR = &H4000000 
Public Const SCF_SELECTION = &H1 

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 

Public Type CHARFORMAT2 
    cbSize As Integer '2 
    wPad1 As Integer '4 
    dwMask As Long '8 
    dwEffects As Long '12 
    yHeight As Long '16 
    yOffset As Long '20 
    crTextColor As Long '24 
    bCharSet As Byte '25 
    bPitchAndFamily As Byte '26 
    szFaceName(0 To LF_FACESIZE - 1) As Byte ' 58 
    wPad2 As Integer ' 60 

' Additional stuff supported by RICHEDIT20 
    wWeight As Integer ' /* Font weight (LOGFONT value)  */ 
    sSpacing As Integer ' /* Amount to space between letters */ 
    crBackColor As Long ' /* Background color     */ 
    lLCID As Long ' /* Locale ID      */ 
    dwReserved As Long ' /* Reserved. Must be 0    */ 
    sStyle As Integer ' /* Style handle      */ 
    wKerning As Integer ' /* Twip size above which to kern char pair*/ 
    bUnderlineType As Byte ' /* Underline type     */ 
    bAnimation As Byte ' /* Animated text like marching ants */ 
    bRevAuthor As Byte ' /* Revision author index   */ 
    bReserved1 As Byte 
End Type 

вызовов :

, чтобы выделить выбранный текст с желтым цветом

Dim RTFformat As CHARFORMAT2 
With RTFformat 
    .cbSize = Len(RTFformat) 
    .dwMask = CFM_BACKCOLOR 
    .crBackColor = vbYellow 
End With 
SendMessage RichTextBox1.hwnd, EM_SETCHARFORMAT, SCF_SELECTION, RTFformat 

Надеется, что это помогает :)

+1

Попробовали ваш код, но он остается обычным текстом, без подсветки, может быть, я сделал это неправильно, я только выбранный текст RichTextBox и нажал на кнопке команды с кодом для вызова его нет ошибка просто осталась прежней, есть идея? – vbdevelp

+1

Я только что протестировал его, и он отлично работает. Вы можете загрузить и запустить этот тестовый проект => проверить, работает ли он на вашем компьютере: https://goo.gl/ZgQODv –

+1

В какой ОС вы работаете, возможно, придется с этим я использую Windows 2007? – vbdevelp

Смежные вопросы