【发布时间】:2014-01-24 11:06:17
【问题描述】:
我正在尝试在面板上放置自定义标题,它正在显示,但是当我使用滚动条滚动时,标题被绘制但并不总是被删除,因此当我再次向上滚动时它会显示很多标题.
关于我做错了什么有什么想法吗?
代码是这样的:
Public Class MyPanel
Inherits Windows.Forms.Panel
Protected Overrides Sub OnPaint(ByVal myPEV As PaintEventArgs)
Dim myRectF As RectangleF = New RectangleF(0, 0, Me.Width, Me.Height)
Dim mySF As New StringFormat
MyBase.OnPaint(myPEV)
Dim myhDC As IntPtr = GetWindowDC(Me.Handle) 'from user32.dll
Dim myGraphs As Graphics = Graphics.FromHdc(myhDC)
If Me.Text IsNot Nothing Then
mySF.Alignment = StringAlignment.Center
mySF.LineAlignment = StringAlignment.Near
myGraphs.DrawString(Me.Text, Me.Font, New SolidBrush(Me.ForeColor), myRectF, mySF)
myGraphs.Dispose()
ReleaseDC(Handle, myhDC) 'from user32.dll
End If
End Sub
End Class
【问题讨论】:
-
我无法重现这个。您是否可能在程序的其他地方弄乱了 Windows 消息?什么操作系统?哪个版本的 .NET/VisualStudio?
-
W7x64 中的 VS2012 和 2005 都编译为 x86。面板有超出面板边界的按钮,并且 Autoscroll 设置为 True,因此滚动条显示
-
知道了 - 我滚动的是面板的容器,而不是面板本身。我现在看到了你的问题。
-
顺便说一句,您的
myPEV参数具有Graphics属性,因此您不必创建Graphics对象
标签: .net vb.net winforms controls