一个自定义的Combox

来源:互联网 发布:网站怎么优化排名靠前 编辑:程序博客网 时间:2024/05/01 05:20

如何在windows标准的combox中加入自定义的item

 

Public Class ComboPattern
    
Inherits System.Windows.Forms.ComboBox

Component Designer generated code

    
'get or set current pattern style
    Private _patternstyle As System.Drawing.Drawing2D.HatchStyle
    
Public Property PatternStyle() As System.Drawing.Drawing2D.HatchStyle
        
Get
            
Return _patternstyle
        
End Get
        
Set(ByVal Value As System.Drawing.Drawing2D.HatchStyle)
            _patternstyle 
= Value
        
End Set
    
End Property



    
Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)
        
MyBase.OnDrawItem(e)
        
Me.DrawMode = DrawMode.OwnerDrawFixed

        
If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
            
Dim selectBrush As New SolidBrush(Me.BackColor)
            e.Graphics.FillRectangle(selectBrush, e.Bounds)
            
Dim selectPen As New Pen(Color.Gray)
            selectPen.DashStyle 
= Drawing2D.DashStyle.Dash
            e.Graphics.DrawRectangle(selectPen, e.Bounds)
        
Else
            
Dim selectBrush As New SolidBrush(Me.BackColor)
            e.Graphics.FillRectangle(selectBrush, e.Bounds)
            
Dim selectPen As New Pen(Me.BackColor)
            e.Graphics.DrawRectangle(selectPen, e.Bounds)
        
End If
        
' e.DrawBackground()
        e.DrawFocusRectangle()

        
Dim myBrush As System.Drawing.Drawing2D.HatchBrush

        
Select Case e.Index
            
Case 0
                
'no pattern
            Case 1
                
'BackwardDiagonal
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.BackwardDiagonal, Color.Black, Me.BackColor)
            
Case 2
                
'Cross
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.Cross, Color.Black, Me.BackColor)

            
Case 3
                
'DarkDownwardDiagonal
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DarkDownwardDiagonal, Color.Black, Me.BackColor)

            
Case 4
                
'DarkHorizontal
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DarkHorizontal, Color.Black, Me.BackColor)

            
Case 5
                
'DarkUpwardDiagonal
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DarkUpwardDiagonal, Color.Black, Me.BackColor)
            
Case 6
                
'DarkVertical
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DarkVertical, Color.Black, Me.BackColor)
            
Case 7
                
'DashedDownwardDiagonal
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DashedDownwardDiagonal, Color.Black, Me.BackColor)

            
Case 8
                
'DashedHorizontal
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DashedHorizontal, Color.Black, Me.BackColor)

            
Case 9
                
'DashedUpwardDiagonal
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DashedUpwardDiagonal, Color.Black, Me.BackColor)
            
Case 10
                
'DashedVertical
                myBrush = New System.Drawing.Drawing2D.HatchBrush(Drawing2D.HatchStyle.DashedVertical, Color.Black, Me.BackColor)

        
End Select

        
'e.Graphics.DrawRectangle(myPen, New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
        If e.Index = 0 Then
            
Dim myBrush1 As New SolidBrush(Color.Black)
            e.Graphics.DrawString(
Me.Items(e.Index), e.Font, myBrush1, New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
        
Else
            
'e.Graphics.DrawLine(myPen, e.Bounds.X, e.Bounds.Y + CInt(e.Bounds.Height / 2), e.Bounds.X + e.Bounds.Width, e.Bounds.Y + CInt(e.Bounds.Height / 2))
            e.Graphics.FillRectangle(myBrush, e.Bounds)

        
End If


    
End Sub



    
Private Sub ComboPattern_SelectedIndexChanged(ByVal sender As ObjectByVal e As System.EventArgs) Handles MyBase.SelectedIndexChanged
        
If (Me.DropDownStyle <> ComboBoxStyle.DropDownList) Then
            
Me.DropDownStyle = ComboBoxStyle.DropDownList
        
End If

        
Dim currentPattern As System.Drawing.Drawing2D.HatchStyle

        
Select Case Me.SelectedIndex
            
Case 0
                
'no pattern, use ZigZag to instead of
                currentPattern = Drawing2D.HatchStyle.ZigZag

            
Case 1
                
'BackwardDiagonal
                currentPattern = Drawing2D.HatchStyle.BackwardDiagonal
            
Case 2
                
'Cross
                currentPattern = Drawing2D.HatchStyle.Cross

            
Case 3
                
'DarkDownwardDiagonal
                currentPattern = Drawing2D.HatchStyle.DarkDownwardDiagonal

            
Case 4
                
'DarkHorizontal
                currentPattern = Drawing2D.HatchStyle.DarkHorizontal

            
Case 5
                
'DarkUpwardDiagonal
                currentPattern = Drawing2D.HatchStyle.DarkUpwardDiagonal

            
Case 6
                
'DarkVertical
                currentPattern = Drawing2D.HatchStyle.DarkVertical

            
Case 7
                
'DashedDownwardDiagonal
                currentPattern = Drawing2D.HatchStyle.DashedDownwardDiagonal


            
Case 8
                
'DashedHorizontal
                currentPattern = Drawing2D.HatchStyle.DarkHorizontal

            
Case 9
                
'DashedUpwardDiagonal
                currentPattern = Drawing2D.HatchStyle.DashedUpwardDiagonal

            
Case 10
                
'DashedVertical
                currentPattern = Drawing2D.HatchStyle.DashedVertical
        
End Select
        
Me.PatternStyle = currentPattern
    
End Sub





End Class

snapshot:

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ipad停用15分钟怎么办 苹果6id停用怎么办 ipad密码停用了怎么办 ipad永久停用了怎么办 ipad停用1小时怎么办 ipad停用无法关机怎么办 citizen手表坏了怎么办 服务器磁盘满了怎么办 百度地图定位不准怎么办 宝宝准生证丢了怎么办 fgo刷不到材料怎么办 行者轨迹未上传怎么办? 房贷少了几块钱怎么办 房贷少了2块怎么办 天天在我们家蹭饭怎么办? 亲戚天天来吃饭怎么办 cad找不到图了怎么办 新建没有工作表怎么办 Html打开是乱码怎么办 xp只读取消不了怎么办 手机地图信号弱怎么办 苹果定位不准确怎么办 苹果导航卡死怎么办 没有上传的发票怎么办 发票显示未上传怎么办 发票未上传怎么办 影响 公务员国考补录不合格的怎么办 车辆转入退档怎么办 校园网总是断网怎么办 校园网经常断网怎么办 身份证号姓名电话号码泄露怎么办 中国邮政银行短信通知怎么办 中通递送不到怎么办 智齿碎了一半怎么办 驾照扣50分怎么办 办不了租赁合同怎么办 收到佰仟律师函怎么办 佰仟律师打电话怎么办 右转车道右方路禁行怎么办 收费站没带现金怎么办 过收费站没有现金怎么办