Google 网上论坛不再支持新的 Usenet 帖子或订阅项。历史内容仍可供查看。

Tranparente RichTextBox

已查看 619 次
跳至第一个未读帖子

Martin H.

未读,
2008年6月19日 11:22:382008/6/19
收件人
Hallo,

ich habe folgendes Problem: Der nachfolgende Code nutzt die RichTextBox
aus der msftedit.dll, die neuer ist als die RichTextBox von .NET und
u.a. Transparenz erlaubt.

Public Class RichEdit50
Inherits RichTextBox

Declare Auto Function LoadLibrary Lib "kernel32.dll" (ByVal lpFileName _
As String) As IntPtr

Private Const WS_EX_TRANSPARENT As Int32 = &H20I

Public Sub New()
SetStyle(ControlStyles.SupportsTransparentBackColor, True)
End Sub

Protected Overloads Overrides ReadOnly Property CreateParams() As _
CreateParams
Get
Dim prams As CreateParams = MyBase.CreateParams
If LoadLibrary("msftedit.dll") <> IntPtr.Zero Then
If BackColor = Color.Transparent Then
prams.ExStyle = prams.ExStyle Or WS_EX_TRANSPARENT
End If
prams.ClassName = "RICHEDIT50W"
End If
Return prams
End Get
End Property


Das Problem ist nur, daß wenn ich in der transparenten RichTextBox Text
eintippe, erscheinen neben den Buchstaben senkrechte Striche.
Beim Markieren von Buchstaben, werden die Buchstaben blau unterlegt und
nach einem Klick in die RichTextBox (Markierung aufheben) bleibt die
Unterlegung.

Wie kann ich diese beiden Probleme beheben?

Besten Dank im voraus!

Martin

Kerem Gümrükcü

未读,
2008年6月19日 22:40:022008/6/19
收件人
Hallo Martin,

>Wie kann ich diese beiden Probleme beheben?

ich tippe jetzt nur mal: Vielleicht hilft
ein erzwungenes neuzeichnen des RTB
Inhallts,...probiers mal,...

Grüße

Kerem

--
--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."

"Martin H." <hk...@gmx.net> schrieb im Newsbeitrag
news:485a79bd$1...@127.0.0.1...

Martin H.

未读,
2008年6月22日 09:33:562008/6/22
收件人
Also,

falls es für jemanden nochmal interessant sein sollte:

Der vorher angegebene Code funktioniert - unter der Voraussetzung,
daß die RTF-Box sich in einem Container befindet.
Das Problem das ich hatte lag darin begründet, daß ich die RTF-Box
über eine PictureBox gelegt hatte. Jetzt, nachdem das Hintergrundbild
in einem Panel ist und die transparente RTF-Box auf dem Panel liegt,
funktioniert es.

Der Hinweis lag auf
http://msdn.microsoft.com/en-us/library/aa453060.aspx

WS_EX_TRANSPARENT: Specifies that a window created with this style
should not be painted until its siblings have been painted. The window
appears transparent because the bits of underlying sibling windows have
already been painted.

Beste Grüße,

Martin

0 个新帖子