如题,网上找了好多答案,C#的自己变成VB
还有国际友人的C#代码,就是不知道哪里不对,死活就是底色没法改变
大体逻辑如下:
Winform修改DateTimePicker控件的背景色Winform中日期控件DateTimePicker默认是不能修改背景色的,如果想要改变它的背景色那也是有办法的,只需要继承DateTimePicker做一个自定义控件,再重写WndProc方法。此外还要重写BackColor属性,这样就可以在外部修改它的颜色了。
我的代码如下
Imports System.ComponentModel
<ToolboxBitmap(GetType(DateTimePicker))>
Public Class DatePicker02
Inherits DateTimePicker
Public Sub New()
'InitializeComponent()
End Sub
Public Sub New(container As IContainer)
'InitializeComponent()
container.Add(Me)
End Sub
Private Const WM_ERASEBKGND As Int32 = &H14
Private _backColor As Color
<Browsable(True)>
<Description("控件背景颜色"), Category("外观")>
Public Shadows Property BackColor As Color
Get
Return _backColor
End Get
Set(ByVal value As Color)
_backColor = value
End Set
End Property
Protected Shadows Sub WndProc(m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_ERASEBKGND Then
Dim g As Graphics = Graphics.FromHdc(m.WParam)
g.FillRectangle(New SolidBrush(_backColor), ClientRectangle)
g.Dispose()
End If
End Sub
End Class
唉,又一个误入歧途的程序员,宝贵的时间和精力花这上面了。
没办法,这是工作。
最终是在codeProject找到的答案,以上这个思路在VS2012下是实现不了的,能实现的思路是,用组合控件。