Sé que esta respuesta es muy tarde, pero espero que ayude a otros a los que les gustaría una manera fácil de hacer esto.
Primero, cree un nuevo Control de usuario en su proyecto y asígnele un nombre, diga CustomRTB.cs. Una vez hecho esto, abra la clase parcial y el cambio:
public partial class CustomRTB : UserControl
a:
public partial class CustomRTB : RichTextBox
Esto causará un error al abrir el archivo de diseño por lo que sólo tiene que ir al archivo Designer.cs y quitar/comentario las líneas que muestran errores (no habrá más de dos líneas con errores). A continuación, añada lo siguiente a la clase parcial:
protected override CreateParams CreateParams
{
get
{
//This makes the control's background transparent
CreateParams CP = base.CreateParams;
CP.ExStyle |= 0x20;
return CP;
}
}
La clase debe tener este aspecto ahora:
public partial class CustomRTB : RichTextBox
{
public CustomRTB()
{
InitializeComponent();
}
protected override CreateParams CreateParams
{
get
{
//This makes the control's background transparent
CreateParams CP = base.CreateParams;
CP.ExStyle |= 0x20;
return CP;
}
}
}
Ahora construir su solución y usted será capaz de utilizar el control en sus formas. Este control será completamente transparente y no podrá ajustar la transparencia. También podrá crear diferentes controles transparentes además de un richtextbox cambiando la primera línea de este código. Esperamos que esto ayude :)
Editar:
El problema con el control anterior es que sólo se puede utilizar para mostrar el texto mediante programación, ya que es problemático para editar mientras se corre o depuración de la aplicación (como @nevelis explica en el comentario a continuación). Sin embargo, hay una solución simple para esto:
Primero, cree otro Control de usuario en su proyecto y asígnele el nombre TranslucentPanel.cs (Sí, es un panel y será translúcido cuya opacidad se puede controlar mediante programación) . Ahora abra la clase parcial y modificarlo como:
public partial class TranslucentPanel : Panel
{
public TranslucentPanel()
{
InitializeComponent();
SetStyle(ControlStyles.SupportsTransparentBackColor |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw |
ControlStyles.UserPaint, true);
BackColor = Color.Transparent;
}
}
Tendrá que tener cuidado de que el error que surge cuando se genera el proyecto simplemente comentando la línea en el archivo Designer.cs el que lo tira.Una vez hecho esto, crea tu proyecto nuevamente y el panel translúcido aparecerá en tu caja de herramientas como antes. Utilice este panel como control principal para su richtextbox transparente, es decir, coloque el panel en su formulario y coloque el RTB dentro de él. También puede configurar la propiedad BorderStyle como None para eliminar cualquier traza del RTB de la UI.
También puede controlar la opacidad del panel translúcido mediante el uso de su propiedad BackColor en su programa:
translucentPanel1.BackColor = Color.FromArgb(50, 0, 0, 0);
Cambio de los argumentos que se pasan por encima le permitirá controlar la opacidad y el color del panel.
Esta solución resolverá el cursor y los problemas de desplazamiento no solo del RTB transparente, sino también de cualquier otro control transparente que cree.
Tendría que codificarlo usted mismo (o encontrar a alguien que ya haya hecho esto), nada incluido para hacer esto afaik. – ChristopheD
Echa un vistazo a esta posible entrada duplicada - http://stackoverflow.com/questions/1716427/making-a-textbox-transparent – eandersson
¿Qué quieres decir con codificarlo solo? ¿¿como es eso?? –