支持Office Xp/2003样式的扁平ComboBox控件
0 导论
首先,在网上可以找到很多这样实现扁平效果的ComboBox代码.我试着实现了一个比较简单的ComboBox控件,但是它却有很多的功能.
正如截图所示,你会发现在此控件中,我集成有如下的功能:支持大号字体,从右至左显示文字,两种下拉样式,当然还包括支持Office Xp/2003两种样式.
1 两种不同样式下的状态

从上到下依次是:正常状态,输入焦点时,不起作用,下拉状态.
2 如何使用代码
FlatComboBox是一个继承于.NetFramework中Windows.Forms.ComboBox的用户控件
通过重写类库中的WinProc来激活MouseMove等事件
Protected Overrides Sub WndProc() Sub WndProc(ByRef m As _2
System.Windows.Forms.Message)3
MyBase.WndProc(m)4
Select Case m.Msg5

6
Case &HF7
'WM_PAINT8

9
'"simple" is not currently supported10
If Me.DropDownStyle = _11
ComboBoxStyle.Simple Then Exit Sub12

13
'==========START DRAWING===========14
g = Me.CreateGraphics15
'clear everything16
If Me.Enabled Then17
g.Clear(Color.White)18
Else19
g.Clear(Color.FromName("control"))20
End If21
'call the drawing functions22
DrawButton(g)23
DrawArrow(g)24
DrawBorder(g)25
DrawText(g)26
'===========STOP DRAWING============27

28
Case 7, 8, &H7, &H8, &H200, &H2A329
'CMB_DROPDOWN, CMB_CLOSEUP, WM_SETFOCUS, 30
'WM_KILLFOCUS, WM_MOUSEMOVE, 31
'WM_MOUSELEAVE (if you move the mouse fast over32
'the combobox, mouseleave doesn't always react)33

34
UpdateState()35
End Select36
End Sub 37
通过Public属性来切换两种样式(Xp/2003):
' Property to let the user change the style 2

Public Property FlatComboStyle() Property FlatComboStyle() As styles3
Get4
Return style5
End Get6
Set(ByVal Value As styles)7
style = Value8
End Set9
End Property 10
ps:本控件由vb.net实现. 可以通过在线转化工具很容易的转化成C#代码 原文出处:http://www.codeproject.com/vb/net/FlatComboBox.asp
源代码下载 Demo下载
转载于:https://www.cnblogs.com/finesite/archive/2005/11/13/275185.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
