Je sais que cette réponse est très tardive, mais j'espère qu'elle aidera d'autres personnes qui voudraient un moyen facile d'y arriver. Commencez par créer un nouveau contrôle utilisateur dans votre projet et attribuez-lui un nom, par exemple CustomRTB.cs. Une fois terminé, ouvrez la classe partielle et le changement:
public partial class CustomRTB : UserControl
à:
public partial class CustomRTB : RichTextBox
Cela entraînera une erreur lorsque vous ouvrez le fichier de conception si juste aller au fichier Designer.cs et de supprimer/commentaire les lignes qui montrent des erreurs (il n'y aura pas plus de deux lignes avec des erreurs). Ensuite, ajouter ce qui suit à la classe partielle:
protected override CreateParams CreateParams
{
get
{
//This makes the control's background transparent
CreateParams CP = base.CreateParams;
CP.ExStyle |= 0x20;
return CP;
}
}
La classe devrait ressembler à ceci maintenant:
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;
}
}
}
maintenant construire votre solution et vous serez en mesure d'utiliser le contrôle dans vos formulaires. Ce contrôle sera complètement transparent et vous ne pourrez pas ajuster la transparence. Vous serez également en mesure de créer différents contrôles transparents en dehors d'une riche zone de texte en changeant la première ligne de ce code. Hope this helps :)
Edit:
Le problème avec le contrôle ci-dessus est qu'il ne peut être utilisé pour afficher le texte par programme car il est difficile de modifier lors de l'exécution ou le débogage de l'application (@nevelis explique dans le commentaire ci-dessous). D'abord, créez un autre contrôle utilisateur dans votre projet et nommez-le TranslucentPanel.cs (oui, il s'agit d'un panneau et il sera translucide dont l'opacité peut être contrôlée par programme) . Maintenant, ouvrez la classe partielle et le modifier comme:
public partial class TranslucentPanel : Panel
{
public TranslucentPanel()
{
InitializeComponent();
SetStyle(ControlStyles.SupportsTransparentBackColor |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw |
ControlStyles.UserPaint, true);
BackColor = Color.Transparent;
}
}
Vous devez prendre soin de l'erreur que les cultures lorsque vous construisez le projet simplement en commentant la ligne dans le fichier Designer.cs qui jette.Une fois terminé, reconstruisez votre projet et le panneau translucide apparaîtra dans votre boîte à outils comme auparavant. Utilisez ce panneau en tant que contrôle parent pour votre zone de texte transparente, c'est-à-dire placez le panneau sur votre formulaire et placez le RTB à l'intérieur. Vous pouvez également définir la propriété BorderStyle sur Aucun pour supprimer toute trace du RTB dans l'interface utilisateur.
Vous pouvez également contrôler l'opacité du panneau translucide en utilisant sa propriété BackColor dans votre programme:
translucentPanel1.BackColor = Color.FromArgb(50, 0, 0, 0);
Modification des arguments ci-dessus vous passé permet de contrôler l'opacité et la couleur du panneau. Cette solution de contournement résoudra les problèmes de curseur et de défilement non seulement du RTB transparent, mais également de tout autre contrôle transparent que vous créez.
Vous devrez le coder vous-même (ou trouver quelqu'un qui l'a déjà fait), rien de prévu pour le faire. – ChristopheD
Jetez un oeil à cette entrée en double possible - http://stackoverflow.com/questions/1716427/making-a-textbox-transparent – eandersson
que voulez-vous dire de le coder par moi-même ?? comment c'est?? –