首页 新闻 会员 周边 捐助

VS2012下,VB环境,自定义控件继承DateTimepicker实现底色变红

0
悬赏园豆:100 [已关闭问题] 关闭于 2015-01-10 21:24

如题,网上找了好多答案,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

零℃弥合的主页 零℃弥合 | 初学一级 | 园豆:11
提问于:2014-07-12 12:43
< >
分享
所有回答(2)
0

唉,又一个误入歧途的程序员,宝贵的时间和精力花这上面了。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-07-12 12:54

没办法,这是工作。

支持(0) 反对(0) 零℃弥合 | 园豆:11 (初学一级) | 2014-07-12 12:55
0

最终是在codeProject找到的答案,以上这个思路在VS2012下是实现不了的,能实现的思路是,用组合控件。

零度弥合 | 园豆:202 (菜鸟二级) | 2014-07-16 02:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册