zoukankan      html  css  js  c++  java
  • 支持Office Xp/2003样式的扁平ComboBox控件


    0 导论

    首先,在网上可以找到很多这样实现扁平效果的ComboBox代码.我试着实现了一个比较简单的ComboBox控件,但是它却有很多的功能.

    正如截图所示,你会发现在此控件中,我集成有如下的功能:支持大号字体,从右至左显示文字,两种下拉样式,当然还包括支持Office Xp/2003两种样式.

    1 两种不同样式下的状态

        捕捉_2.jpg
       从上到下依次是
    :正常状态,输入焦点时,不起作用,下拉状态.

    2 如何使用代码


    FlatComboBox
    是一个继承于.NetFrameworkWindows.Forms.ComboBox的用户控件
    通过重写类库中的WinProc来激活MouseMove等事件

     1Protected Overrides Sub WndProc(ByRef m As _
     2                       System.Windows.Forms.Message)
     3        MyBase.WndProc(m)
     4        Select Case m.Msg
     5
     6            Case &HF
     7                'WM_PAINT
     8
     9                '"simple" is not currently supported
    10                If Me.DropDownStyle = _
    11                           ComboBoxStyle.Simple Then Exit Sub
    12
    13                '==========START DRAWING===========
    14                g = Me.CreateGraphics
    15                'clear everything
    16                If Me.Enabled Then
    17                    g.Clear(Color.White)
    18                Else
    19                    g.Clear(Color.FromName("control"))
    20                End If
    21                'call the drawing functions
    22                DrawButton(g)
    23                DrawArrow(g)
    24                DrawBorder(g)
    25                DrawText(g)
    26                '===========STOP DRAWING============
    27
    28            Case 78&H7, &H8, &H200, &H2A3
    29                'CMB_DROPDOWN, CMB_CLOSEUP, WM_SETFOCUS, 
    30                'WM_KILLFOCUS, WM_MOUSEMOVE,  
    31                'WM_MOUSELEAVE (if you move the mouse fast over
    32                'the combobox, mouseleave doesn't always react)
    33
    34                UpdateState()
    35        End Select
    36End Sub

    37


    通过Public属性来切换两种样式(Xp/2003):

     1'Property to let the user change the style
     2    Public Property FlatComboStyle() As styles
     3        Get
     4            Return style
     5        End Get
     6        Set(ByVal Value As styles)
     7            style = Value
     8        End Set
     9    End Property

    10
    ps:本控件由vb.net实现.  可以通过在线转化工具很容易的转化成C#代码
    原文出处:http://www.codeproject.com/vb/net/FlatComboBox.asp
      源代码下载    Demo下载 
  • 相关阅读:
    sql server 中 bit 字段的 查询方法
    C# 4.0新特性"协变"与"逆变"以及背后的编程思想
    marginleft是做边距,是宽度 left是定位盒子左上角左边位置的一个点
    什么是企业库 怎么使用企业库 企业库的好处 企业库的目标
    SQL各种Join用法(Full,Left,Out,Inner)
    JavaScript计算两个文本框内数据的乘积(四舍五入保留两位小数)
    SQL VIEW(视图)
    Sql ISNULL() 函数
    left join 和 left outer join 有什么区别
    18个不常见的C#关键字,您使用过几个?
  • 原文地址:https://www.cnblogs.com/finesite/p/275185.html
Copyright © 2011-2022 走看看