|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Control.BackColor Transparency, Control.BackColor = Color.Transparenti need it to be a like a pane of glass lying on a sheet of paper, where u can see everything on the sheet of paper not covered by text written on the glass pane. i need to be able to see the control or form that is underneath the RichTextbox, and at the same time to be able to write and erase text to the RichTextbox. i'm assuming that it is the backcolor that hides what is underneath a control. so i tried setting rtb.BackColor = Color.Transparent. when u do that u get a error that BackColor may not be Color.Transparent. bummer. i looked for help and found the following link on the cd that came with net 2005 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxmclictl/html/32433e63-f4e9-4305-9857-6de3edeb944a.htm the heading is: How to: Give Your Control a Transparent Background in it it tells u the following: ======================== By default, controls do not support transparent backcolors. However, you can allow your control to have a background color that is opaque, transparent, or partially transparent by using the Control.SetStyle Method in the constructor. The SetStyle method of the Control class allows you to set particular style preferences for your controls, and can be used to enable or disable support for transparent backcolors. To give your control a transparent backcolor Locate the constructor for your control class. Call the SetStyle method of your form in the constructor. SetStyle(ControlStyles.SupportsTransparentBackColor, True) This will enable your control to support a transparent backcolor. Beneath the line of code you added in step 1, add the following line. This will set your control's BackColor to Transparent. Me.BackColor = Color.Transparent ====================================== i subclassed the RichTextbox control, added a constructor, as follows: (i tried Me.SetStyle(ControlStyles.Opaque, False) & Me.SetStyle(ControlStyles.Opaque, True) & omitting it alltogether, it didn't help.) --------------- Public Class clsRtbx Inherits System.Windows.Forms.RichTextBox Sub New() SetStyle(ControlStyles.SupportsTransparentBackColor, True) Me.SetStyle(ControlStyles.Opaque, False) Me.BackColor = Color.Transparent End Sub End Class -------------- to test it, i did the following in the Form_Load event Dim rtb2 As New clsRtbx rtb2.Text = "" rtb2.Top = 0 rtb2.Left = 0 rtb2.Width = 300 rtb2.Multiline = True rtb2.Height = 200 rtb2.BackColor = Color.Transparent 'i tried with this line, and without it Me.Controls.Add(rtb2) rtb2.BringToFront() when i did this, i did not get the color transparency error, but it still hides everything underneath itself! am i missing something? i would greatly appreciate to find out if a control can be make transparent (as explained above, to see what is underneath it, while being able to write/erase to it), and how to do it. thanks, ray I have code for this, but you will need to be patient as it is somewhere I
need to find. I remember promising to do something about a transparent textbox?
Please let me know if this is OK Inherits System.Windows.Forms.RichTextBox' doesn't work with TextBox Private Const WM_SHOWWINDOW As Long = &H18 Private Const WM_SETFONT As Long = &H30 Public Sub New() MyBase.New() SetStyle(ControlStyles.SupportsTransparentBackColor Or ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer, True) End Sub Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) MyBase.WndProc(m) Select Case m.Msg Case WM_SHOWWINDOW Dim msg As Message = Message.Create(Handle, WM_SETFONT, Font.ToHfont(), IntPtr.Zero) MyBase.WndProc(msg) End Select End Sub Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams Get Dim cp As CreateParams = MyBase.CreateParams cp.ExStyle = cp.ExStyle Or &H20 Return cp End Get End Property Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) If Me.GetStyle(ControlStyles.UserPaint) Then Me.myInvalidate() Me.SetStyle(ControlStyles.UserPaint, False) End If End Sub hi stuart,
thanks so much for the snipped it worked fine. (there was i think a small typo, in the OnPaint sub, 'Me.myInvalidate()' gets flagged down as an error saying that myInvalidate is not a member, i changed it t 'Me.Invalidate()', and i think it works fine. i never tinkered that deep down in controls, so please let me know if this was your intention, or else please let me how u would fix this.) thanks again, ray
Set PrivateFont in browser
richtextbox changing fontstyles for selected text is it possible to get delegates from properties directly? control types "Global" objects Parsing the appended data of log file in real time Copying A Control Not As A Reference XML-RPC actions done twice but only one trigger? Change the rowspan, columnspan property of a button control in a TableLayoutPanel at runtime |
|||||||||||||||||||||||