Vale ya se a lo que te refieres, el problema es que si lo disableo no puedo cambiar el Backcolor...
Eso es muy contradictorio, en tu snippet original se queda un fondo transparente... ¿ahora para que quieres modificar el color de fondo?.
Bueno, pues si no quieres desactivarlo vas a tener que usar APIS para ocultar el cursor de texto (caret) del control:
You'll need to use Win32 APIs. Here's what you could do in VB:
'API declares
Private Declare Function HideCaret Lib "user32" _
(ByVal hwnd As IntPtr) As Integer
Private Declare Function ShowCaret Lib "user32" _
(ByVal hwnd As IntPtr) As Integer
'hide the caret in myTextBox
Call HideCaret(myTextBox.Handle)
'show the caret back..
Call ShowCaret(myTextBox.Handle)
and in C#
[DllImport("user32.dll", EntryPoint = "ShowCaret")]
public static extern long ShowCaret(IntPtr hwnd);
[DllImport("user32.dll", EntryPoint = "HideCaret")]
public static extern long HideCaret(IntPtr hwnd);
then make a call to
HideCaret(richtextbox.Handle)
when ever you want to hide it.
EDITO: Lo he probado y parece que no funciona.
EDITO 2: Funciona, para hacerlo funcionar hay que llamar a la función dentro de varios eventos del Richtextbox (por ejemplo MouseHover).
Saludos