首页 > 编程 > .NET > 正文

颜色下拉COMBOBOX控件(vb.net)

2024-07-10 13:00:39
字体:
来源:转载
供稿:网友
中国最大的web开发资源网站及技术社区,
 

前不久,有位朋友发帖,寻求颜色选择的combobox  的制作方法,经过试验,整理了出来,仅供参考。

(注:如有引用,请注明出处和作者)

                                                                                                                                 --闵峰(2005/08/06东莞)

 private sub filllistboxwithcolors()
        me.combobox1.drawmode = drawmode.ownerdrawfixed
        me.combobox1.dropdownstyle = comboboxstyle.dropdownlist
        me.combobox1.itemheight = 15
        '避免闪烁beginupdate
        me.combobox1.beginupdate()
        combobox1.items.clear()
        dim pi as reflection.propertyinfo
        for each pi in gettype(color).getproperties(reflection.bindingflags.public or reflection.bindingflags.static)
            me.combobox1.items.add(pi.name)
        next
        combobox1.endupdate()

    end sub

 private sub combobox1_drawitem(byval sender as object, byval e as system.windows.forms.drawitemeventargs) handles combobox1.drawitem
        if e.index < 0 then exit sub
      
        dim rect as rectangle = e.bounds '每一项的边框
      
        '绘制项如果被选中则显示高亮显示背景,否则用白色
        if e.state and drawitemstate.selected then
            e.graphics.fillrectangle(systembrushes.highlight, rect)
        else
            e.graphics.fillrectangle(systembrushes.window, rect)
        end if

        dim colorname as string = combobox1.items(e.index)
        dim b as new solidbrush(color.fromname(colorname))

        '缩小选定项区域()
        rect.inflate(-16, -2)
        '填充颜色(文字对应的颜色)
        e.graphics.fillrectangle(b, rect)
        '绘制边框()
        e.graphics.drawrectangle(pens.black, rect)
        dim b2 as brush
        '确定显示的文字的颜色()
        if cint(b.color.r) + cint(b.color.g) + cint(b.color.b) > 128 * 3 then
            b2 = brushes.black
        else
            b2 = brushes.white

        end if
        e.graphics.drawstring(colorname, me.combobox1.font, b2, rect.x, rect.y)

    end sub

    private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
        filllistboxwithcolors()
    end sub

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表