我有一个 DateTimePicker,我“动态地”分配 Paint-Event,不幸的是,只要分配了这个 Event,文本和 DropDown-Button 都不会被渲染(但正在工作)。
我编写了一个组件,它采用另一个控件并在其上绘制一些东西
Public Sub New(Byval parent As Control)
Me._parent = parent
Me._setStyle = Me._parent.GetType().GetMethod("SetStyle", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
Me._setStyle.Invoke(Me._parent, New Object() {ControlStyles.UserPaint, True})
Me._setStyle.Invoke(Me._parent, New Object() {ControlStyles.OptimizedDoubleBuffer, True})
AddHandler Me._parent.Paint, AddressOf RemotePaintHandler
End Sub
Private Sub RemotePaintHandler(ByVal sender As Object, ByVal e As PaintEventArgs)
'draw something here'
End Sub
在处理组件时,我将删除处理程序并重置样式。但是只要分配了处理程序,DateTimePicker 就会像没有内容的普通文本框一样呈现,但是按钮正在工作,我也可以输入值。如果我覆盖了 OnPaint() 方法,我只需调用 MyBase.OnPaint() 或类似方法......但这是一个事件处理程序......我现在完全一无所知。