Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TextBox with a Transparent Background [duplicate]

I want to do textBox a Transparent Background c# .net Visual Studio is making a mistake if you define Properties

like image 549
shlomi Avatar asked Apr 05 '11 19:04

shlomi


People also ask

Which HTML attribute displays a transparent text within a textbox?

input[type=text] { background: transparent; border: none; } background-color:rgba(0,0,0,0);


2 Answers

Put this in the constructor:

SetStyle(ControlStyles.SupportsTransparentBackColor, true);

The class need to enable the transparent style. (For some reason it isn't supported by default).

public class MyControl : System.Windows.Forms.UserControl
{
        public MyControl ()
        {
            // Create visual controls
            InitializeComponent();
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        }
}

Or if it's not a custom control:

mycontrolObject.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

More about Control.SetStyle Method

Other Control Styles

like image 114
Yochai Timmer Avatar answered Oct 08 '22 00:10

Yochai Timmer


I've found a workaround for this problem, which I have on my own. Most of what I've read over here is true. And the approaches "à la" AlphaBlendTextBox are way too complex or too time-consuming for some environments, already heavily charged.

Assume you have a given background color and a given picture or whatever you want to see through the RichTextBox control. This is what I've done (summarized):

  1. on the main form, you place the picture, text, buttons or whatever as projected, with the proper background color and / or picture
  2. create a new form and position it wherever appropriate
  3. set this new form TransparencyKey to SystemColors.InactiveBorder
  4. take care of this form border properties (FormBorderStyle to FormBorderStyle.None; ControlBox,MinimizeBox, MaximizeBox and ShowIcon to false, TopMost to true, StartPosition to FormStartPosition.Manual, SizeGripStyle to SizeGripStyle.Hide), so there's no visible form structures
  5. create a RichTextBox with the same size of the form and located on its upper, left corner
  6. set this box BackColor to SystemColors.InactiveBorder (remember the TransparencyKey?) and its BorderStyle to None as well
  7. take care of textbox contents: color(s), font(s) and strings
  8. synchronize this form visibility with whatever you need to and... voilà! You can see your application background through whatever you write and edit on the text box!

I can't pretend this approach fits everybody, but it is way simpler than others I've seen and, as long as I can keep it that way, I do prefer the simpler solutions.

Of course, when you close the main form, you must take care of the child form, but this is pretty basic for you, isn't it?

Enjoy!

like image 3
Antonio Rodulfo Avatar answered Oct 08 '22 01:10

Antonio Rodulfo