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):
- on the main form, you place the picture, text, buttons or whatever as projected, with the proper background color and / or picture
- create a new form and position it wherever appropriate
- set this new form
TransparencyKey
to SystemColors.InactiveBorder
- 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
- create a
RichTextBox
with the same size of the form and located on its upper, left corner
- set this box
BackColor
to SystemColors.InactiveBorder
(remember the TransparencyKey?)
and its BorderStyle
to None as well
- take care of textbox contents: color(s), font(s) and strings
- 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!