精华内容
下载资源
问答
  • android完美下拉框控件

    2017-10-02 19:55:34
    android完美下拉框控件android完美下拉框控件android完美下拉框控件android完美下拉框控件
  • bootstrap的多选下拉框控件,通过对多选框的渲染,在下拉框中实现多选
  • 多选下拉框控件

    2016-08-03 15:43:34
    使用js, css, html实现多选下拉列表的功能
  • 下拉框控件 直接对属性的使用: 在工具箱中选择Combo Box,右键属性,选择数据,可以在数据中写你想要的选项,之间用分号隔开(注意一定是英文分号),运行之后就可以选择对应的数据,但此数据是可以直接在下拉框...

    下拉框控件

    直接对属性的使用:

    在工具箱中选择Combo Box,右键属性,选择数据,可以在数据中写你想要的选项,之间用分号隔开(注意一定是英文分号),运行之后就可以选择对应的数据,但此数据是可以直接在下拉框中人为修改的,如果不想被人为修改,则在属性中选择Type,将Dropdown改为Drop List即可。如果直接这样设置,在下拉框运行的时候,可选数据的排序是依据ASCII码的第一个字母排序,如果想按照之前在Date属性中写的顺序,则把Sort属性中的Ture改为False

    在代码中使用:

    右键添加变量,除了编辑框会用value一般类别都是Contral类型,之后设置作用域为Private,变量名为m_cbx,此时程序就将自动将变量名和下拉框在.CPP文件的DoDataExchange函数中关联了起来
    在这里插入图片描述
    但我们一半不会在上述的属性使用中直接设置控件内容,而是在函数中通过程序从而方便管理。
    Ⅰ:如要添加相应的变量,则在.CPP函数中的初始化函数里写语句: m_cbx.AddString(TEXT(“XXX”));
    Ⅱ:但程序运行之后下拉框没有默认选项,要添加默认选项,我们用SetCurSel函数实现:m_cbx.SetCurSel(0);
    Ⅲ:要在指定位置插入/删除选项,则用如下语句:
    m_cbx.InsertString(n,TEXT(“XXX”));m_cbx.DeleteString(n);
    Ⅳ:要获取X号索引的具体内容,用m_cbx.GetLBText(n,str);
    如图所示:
    在这里插入图片描述
    代码如下:

     //下拉框添加
         m_cbx.AddString(TEXT("雪碧"));
      m_cbx.AddString(TEXT("红牛"));
      m_cbx.AddString(TEXT("可乐"));
      m_cbx.AddString(TEXT("脉动"));
     //设置默认选项
      m_cbx.SetCurSel(0);//索引值为第一个
      //插入
      m_cbx.InsertString(4,TEXT("朗姆酒"));//在第几个位置插入
      //删除
      m_cbx.DeleteString(3);//删除第几个位置的选项
      //要获取X号索引的具体内容
         // CString str;
         // m_cbx.GetLBText(1,str);
         // MessageBox(str);

    Ⅴ:在控件的事件中(闪电符号),有一个CBN_SELCHANGE事件,可以在修改下拉框内容的同时监听这个事件,做一些操作。点击添加事件,如果我们要拿出这个更改后的内容,则用如下代码:

    void C下拉框Dlg::OnCbnSelchangeCombo1()
    {
     // TODO: 在此添加控件通知处理程序代码
    //拿到索引位置
     int index = m_cbx.GetCurSel();
     CString str;
     m_cbx.GetLBText(index,str);
     MessageBox(str);
    }
    
    展开全文
  • 自定义表头,添加复选框和下拉选项框
  • winform 下拉框(自定义下拉框控件

    千次阅读 2020-06-08 19:51:56
    项目中遇到需要下拉框列表内容为线类型或点类型图形的需求,想到可以使用手绘线条和图形的方式来实现下拉列表内容自定义,记录下来供大家参考学习之用。 在项目中添加一个组件 添加完之后会显示如下设计界面 这里...

    项目中遇到需要下拉框列表内容为线类型或点类型图形的需求,想到可以使用手绘线条和图形的方式来实现下拉列表内容自定义,记录下来供大家参考学习之用。

    在项目中添加一个组件

    在这里插入图片描述

    在这里插入图片描述
    添加完之后会显示如下设计界面
    在这里插入图片描述
    这里直接点击切换到代码视图即可

    注意:新建的组件默认继承Component,我们这里是要自定义一个ComboBox下拉框,所以要继承自ComboBox,此类位于using System.Windows.Forms命名空间下
    在这里插入图片描述

    线的类型列表

    在这里插入图片描述

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace CustomComponents
    {
        /// <summary>
        /// 填充线型
        /// </summary>
        public partial class FillLineTypeCbo : ComboBox
        {
            public FillLineTypeCbo()
            {
          		//初始化组件
                InitializeComponent();
            }
    
            public FillLineTypeCbo(IContainer container)
            {
                container.Add(this);
    
                InitializeComponent();
                InitItems();
            }
    
            private void InitItems()
            {
                this.DrawMode = DrawMode.OwnerDrawFixed;//手动绘制所有元素
                this.DropDownStyle = ComboBoxStyle.DropDownList;//下拉框样式设置为不能编辑
                this.Items.Clear();//清空原有项 
            }
    
            public enum LineType
            {
                DoubleHorizontalLine = 0,//双横线
                VerticalLine,//垂直线
                LeftSlash,//左斜线
                RightSlash,//右斜线
                VerticalGridlines,//垂直网格线
                CrossGridlines,//交叉网格线
                SolidBrush,//实心刷
                HollowBrush,//空心刷
            }
            //protected
            protected override void OnDrawItem(DrawItemEventArgs e)
            {
                if (e.Index >= 0)//判断是否需要重绘
                {
                    int typeId = int.Parse(this.Items[e.Index].ToString());//获取选项id
    
                    Font font = new Font("宋体", 9);//定义字体
                    Rectangle rect = e.Bounds;
                    //rect.Inflate(-2, -2);//缩放一定大小
                    rect.Inflate(5, -2);//缩放一定大小
                    Pen pen = null;
                    SolidBrush solidBrush = new SolidBrush(Color.Black);
    
                    float offSet = rect.Height / 2;
                    float x = rect.Width / 10;
                    float y = rect.Top + offSet;//如果设置成e.ItemHeigh*e.Index +offSet,则在选中节点后,由于Item位置固定,因此Item不能显示出来。
                    switch (typeId)
                    {
                        case (int)LineType.DoubleHorizontalLine:
                            pen = new Pen(Color.Black, 1);
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(8 * x, y));//绘制水平线
                            e.Graphics.DrawLine(pen, new PointF(x, y + 5), new PointF(8 * x, y + 5));
                            //e.Graphics.DrawLine(pen, new PointF(x, y+2), new PointF(x, y+2));
                            break;
                        case (int)LineType.VerticalLine:
                            pen = new Pen(Color.Black, 1);
                            //绘制垂直线
                            int xNum = 0;
                            for (int i = 0; i < 10; i++)
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNum, y - 4), new PointF(1 * x + xNum, y + 6));
                                xNum += 7;
    
                            }
                            break;
                        case (int)LineType.LeftSlash:
                            pen = new Pen(Color.Black, 1);
                            //绘制左斜线
                            int xNumLeftSlash = 0;
                            for (int i = 0; i < 10; i++)
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNumLeftSlash, y - 4), new PointF(x + 5 + xNumLeftSlash, y + 7));
                                xNumLeftSlash += 7;
                            }
                            break;
                        case (int)LineType.RightSlash:
                            pen = new Pen(Color.Black, 1);
                            //绘制右斜线
                            int xNumRightSlash = 0;
                            for (int i = 0; i < 10; i++)
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNumRightSlash + 7, y - 4), new PointF(x + xNumRightSlash, y + 7));
                                xNumRightSlash += 7;
                            }
                            break;
                        case (int)LineType.VerticalGridlines:
                            pen = new Pen(Color.Black, 1);
                            //绘制垂直网格线
                            xNum = 0;
                            for (int i = 0; i < 10; i++)//绘制竖线
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNum, y - 4), new PointF(1 * x + xNum, y + 6));
                                xNum += 7;
                            }
                            //绘制双横线
                            e.Graphics.DrawLine(pen, new PointF(x - 3, y - 2), new PointF(8 * x, y - 2));
                            e.Graphics.DrawLine(pen, new PointF(x - 3, y + 5), new PointF(8 * x, y + 5));
                            break;
                        case (int)LineType.CrossGridlines:
                            pen = new Pen(Color.Black, 1);
                            //绘制交叉网格线
                            //绘制左斜线
                            xNumLeftSlash = 0;
                            for (int i = 0; i < 10; i++)
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNumLeftSlash, y - 4), new PointF(x + 10 + xNumLeftSlash, y + 7));
                                xNumLeftSlash += 7;
                            }
                            //绘制右斜线
                            xNumRightSlash = 0;
                            for (int i = 0; i < 10; i++)
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNumRightSlash + 10, y - 4), new PointF(x + xNumRightSlash, y + 7));
                                xNumRightSlash += 7;
                            }
                            break;
                        case (int)LineType.SolidBrush:
                            pen = new Pen(Color.Black, 10);
                            //绘制实心刷
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(8 * x, y));
                            break;
                        case (int)LineType.HollowBrush:
                            pen = new Pen(Color.Black, 1);
                            //绘制空心刷
                            e.Graphics.DrawLine(pen, new PointF(x, y - 6), new PointF(x, y + 6));//左
                            e.Graphics.DrawLine(pen, new PointF(x, y - 6), new PointF(8 * x, y - 6));//上
                            e.Graphics.DrawLine(pen, new PointF(8 * x, y - 6), new PointF(8 * x, y + 6));//右
                            e.Graphics.DrawLine(pen, new PointF(x, y + 6), new PointF(8 * x, y + 6));//下
                            break;
                        default:
                            pen = new Pen(Color.Black, 1);
                            break;
                    }
                }
            }
        }
    }
    
    

    边框线类型列表

    在这里插入图片描述

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace CustomComponents
    {
        /// <summary>
        /// 线型
        /// </summary>
        public partial class LineShapeCbo : ComboBox
        {
            public LineShapeCbo()
            {
                InitializeComponent();
            }
    
            public LineShapeCbo(IContainer container)
            {
                container.Add(this);
    
                InitializeComponent();
                InitItems();
            }
    
            private void InitItems()
            {
                this.DrawMode = DrawMode.OwnerDrawFixed;//手动绘制所有元素
                this.DropDownStyle = ComboBoxStyle.DropDownList;//下拉框样式设置为不能编辑
                this.Items.Clear();//清空原有项 
            }
    
            public enum LineType
            {
                SolidLine = 0,//实线
                LongDisconnection,//长间断线
                ShortEndLine,//短间端线
                LongAndShort,//长短相间
                ShortToLong,//长短短相间
                EmptyBrushes//空画笔
            }
    
            protected override void OnDrawItem(DrawItemEventArgs e)
            {
                if (e.Index >= 0)//判断是否需要重绘
                {
                    int typeId = int.Parse(this.Items[e.Index].ToString());//获取选项id
    
                    Font font = new Font("宋体", 9);//定义字体
                    Rectangle rect = e.Bounds;
                    //rect.Inflate(-2, -2);//缩放一定大小
                    rect.Inflate(5, -2);//缩放一定大小
                    Pen pen = null;
                    SolidBrush solidBrush = new SolidBrush(Color.Black);
    
                    float offSet = rect.Height / 2;
                    float x = rect.Width / 10;
                    float y = rect.Top + offSet;//如果设置成e.ItemHeigh*e.Index +offSet,则在选中节点后,由于Item位置固定,因此Item不能显示出来。
                    switch (typeId)
                    {
                        case (int)LineType.SolidLine:
                            pen = new Pen(Color.Black, 1);
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(8 * x, y));//绘制实线
                            //e.Graphics.DrawLine(pen, new PointF(x, y+2), new PointF(x, y+2));
                            break;
                        case (int)LineType.LongDisconnection:
                            pen = new Pen(Color.Black, 1);
                            //绘制长间断线
                            int xNum = 0;
                            for (int i = 0; i < 3; i++)
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNum, y), new PointF(15+x + xNum, y));
                                xNum += 20;
                            }
                            e.Graphics.DrawLine(pen, new PointF(x + xNum, y), new PointF(10 + x + xNum, y));
                            break;
                        case (int)LineType.ShortEndLine:
                            pen = new Pen(Color.Black, 1);
                            //绘制短间端线
                            xNum = 0;
                            for (int i = 0; i < 8; i++)
                            {
                                e.Graphics.DrawLine(pen, new PointF(x + xNum, y), new PointF(6 + x + xNum, y));
                                xNum += 9;
                            }
                            break;
                        case (int)LineType.LongAndShort:
                            pen = new Pen(Color.Black, 1);
                            //绘制长短相间
                                e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(x+10, y));
                                e.Graphics.DrawLine(pen, new PointF(x+15, y), new PointF(x+20, y));
                                e.Graphics.DrawLine(pen, new PointF(x+25, y), new PointF(x+35, y));
                                e.Graphics.DrawLine(pen, new PointF(x+40, y), new PointF(x+45, y));
                                e.Graphics.DrawLine(pen, new PointF(x+50, y), new PointF(x+60, y));
                                e.Graphics.DrawLine(pen, new PointF(x+65, y), new PointF(x+70, y));
                            break;
                        case (int)LineType.ShortToLong:
                            pen = new Pen(Color.Black, 1);
                            //绘制长短短相间
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(x + 10, y));
                            e.Graphics.DrawLine(pen, new PointF(x+15, y), new PointF(x + 18, y));
                            e.Graphics.DrawLine(pen, new PointF(x+23, y), new PointF(x + 26, y));
                            e.Graphics.DrawLine(pen, new PointF(x+31, y), new PointF(x + 41, y));
                            e.Graphics.DrawLine(pen, new PointF(x + 46, y), new PointF(x + 49, y));
                            e.Graphics.DrawLine(pen, new PointF(x + 54, y), new PointF(x + 57, y));
                            e.Graphics.DrawLine(pen, new PointF(x + 62, y), new PointF(x + 70, y));
                            break;
                        case (int)LineType.EmptyBrushes:
                            pen = new Pen(Color.Black, 1);
                            //绘制空画笔
                            break;
                        //case (int)LineType.LineWithPoints:
                        default:
                            pen = new Pen(Color.Black, 1);
                            break;
                    }
                    //if (e.Index < 9)
                    //{
                    //    e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(8 * x, y));//绘制线
                    //    //Rectangle rectColor = new Rectangle(rect.Location, new Size(9 * (int)x, rect.Height));
                    //    //e.Graphics.DrawRectangle(Pens.Black, rectColor);//绘制边框
                    //}
                }
            }
        }
    }
    
    

    点类型列表

    在这里插入图片描述

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace CustomComponents
    {
        /// <summary>
        /// 点类型
        /// </summary>
        public partial class PointTypeCbo : ComboBox
        {
            public PointTypeCbo()
            {
                InitializeComponent();
            }
    
            public PointTypeCbo(IContainer container)
            {
                container.Add(this);
    
                InitializeComponent();
                InitItems();
            }
            private void InitItems()
            {
                this.DrawMode = DrawMode.OwnerDrawFixed;//手动绘制所有元素
                this.DropDownStyle = ComboBoxStyle.DropDownList;//下拉框样式设置为不能编辑
                this.Items.Clear();//清空原有项 
            }
    
            protected override void OnDrawItem(DrawItemEventArgs e)
            {
                if (e.Index >= 0)//判断是否需要重绘
                {
                    int typeId = int.Parse(this.Items[e.Index].ToString());//获取选项id
    
                    Font font = new Font("宋体", 9);//定义字体
                    Rectangle rect = e.Bounds;
                    //rect.Inflate(-2, -2);//缩放一定大小
                    rect.Inflate(5, -2);//缩放一定大小
                    Pen pen = null;
                    SolidBrush solidBrush = new SolidBrush(Color.Black);
    
                    float offSet = rect.Height / 2;
                    float x = rect.Width / 10;
                    float y = rect.Top + offSet;//如果设置成e.ItemHeigh*e.Index +offSet,则在选中节点后,由于Item位置固定,因此Item不能显示出来。
                    switch (typeId)
                    {
                        case 0:
                            pen = new Pen(Color.Red, 1);//设置边框
                            //SolidBrush sb0 = new SolidBrush(Color.Black);//设置填充颜色
                            //绘制
                            //e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(8 * x, y));
                            //Graphics g = CreateGraphics();
                            //Brush myBrush = new SolidBrush(Color.Green);
                            //string str = "just for fun";
                            //Font myFont = new Font("宋体", 9, FontStyle.Bold);
                            //e.Graphics.DrawString(str, myFont, myBrush, 60, 20);          
                            //e.Graphics.FillEllipse(sb0, 10 ,10 , 10, 10);
                            e.Graphics.DrawEllipse(pen, 9, 5, 10, 10);
                            break;
                        case 1:
                            pen = new Pen(Color.Red, 1);
                            //绘制正方形
                            e.Graphics.DrawLine(pen, new PointF(x, y - 5), new PointF(x, y + 5));//左
                            e.Graphics.DrawLine(pen, new PointF(x, y - 5), new PointF(x + 10, y - 5));//上
                            e.Graphics.DrawLine(pen, new PointF(x + 10, y - 5), new PointF(x + 10, y + 5));//右
                            e.Graphics.DrawLine(pen, new PointF(x, y + 5), new PointF(x + 10, y + 5));//下
    
                            //Rectangle rectColor = new Rectangle(rect.Location, new Size(10, 10));
                            //e.Graphics.DrawRectangle(Pens.Black, rectColor);//绘制边框
    
                            break;
                        case 2:
                            pen = new Pen(Color.Red, 1);
                            //绘制十字形
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(x + 10, y));//横
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y - 5), new PointF(x + 5, y + 5));//竖
                            break;
                        case 3:
                            pen = new Pen(Color.Red, 1);
                            //绘制三角形
                            e.Graphics.DrawLine(pen, new PointF(x, y + 5), new PointF(x + 5, y - 5));//左
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y - 5), new PointF(x + 10, y + 5));//右
                            e.Graphics.DrawLine(pen, new PointF(x, y + 5), new PointF(x + 10, y + 5));//下
                            break;
                        case 4:
                            pen = new Pen(Color.Red, 1);
                            //绘制右(三角)红旗
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y + 5), new PointF(x + 5, y - 5));//竖杆
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y - 5), new PointF(x + 10, y));//红旗右边
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y), new PointF(x + 10, y));//红旗下边
                            break;
                        case 5:
                            pen = new Pen(Color.Red, 1);
                            //绘制左(三角)红旗 
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y + 5), new PointF(x + 5, y - 5));//竖杆
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(x + 5, y - 5));//红旗左边
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(x + 5, y));//红旗下边
                            break;
                        case 6:
                            pen = new Pen(Color.Red, 1);
                            //绘制右方旗
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y + 5), new PointF(x + 5, y - 5));//竖杆
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y - 5), new PointF(x + 10, y - 5));//右上边
                            e.Graphics.DrawLine(pen, new PointF(x + 10, y - 5), new PointF(x + 10, y));//右右边
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y), new PointF(x + 10, y));//右下边
                            break;
                        case 7:
                            pen = new Pen(Color.Red, 1);
                            //绘制大圆包小圆
                            //e.Graphics.DrawEllipse(pen, 20, 115, 10, 10);//空心大圆
                            //e.Graphics.DrawEllipse(pen, 13, 118, 4, 4);//空心小圆 
                            e.Graphics.DrawEllipse(pen, x, y - 5, 10, 10);//空心大圆
                            e.Graphics.DrawEllipse(pen, x + 3, y - 5 + 3, 4, 4);//空心小圆
                            //Rectangle rectColor = new Rectangle(rect.Location, new Size(9 * (int)x, rect.Height));
                            //e.Graphics.DrawRectangle(Pens.Black, rectColor);//绘制边框
                            break;
                        case 8:
                            pen = new Pen(Color.Red, 1);
                            //绘制大圆加十字
                            e.Graphics.DrawEllipse(pen, x, y - 5, 10, 10);//空心大圆
                            //绘制十字形
                            e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(x + 10, y));//横
                            e.Graphics.DrawLine(pen, new PointF(x + 5, y - 5), new PointF(x + 5, y + 5));//竖
                            break;
                        case 9:
                            pen = new Pen(Color.Red, 1);
                            //绘制实心圆
                            SolidBrush sb9 = new SolidBrush(Color.Green);//设置填充颜色
                            e.Graphics.DrawEllipse(pen, x, y - 5, 10, 10);//实心圆边框
                            e.Graphics.FillEllipse(sb9, x, y - 5, 10, 10);//实心圆填充
                            break;
                        case 10:
                            pen = new Pen(Color.Red, 1);
                            //绘制实心正方形
                            //绘制正方形
                            e.Graphics.DrawRectangle(pen, x, y - 5, 10, 10);
                            SolidBrush sb10 = new SolidBrush(Color.Green);//设置填充颜色
                            e.Graphics.FillRectangle(sb10, x, y - 5, 10, 10);
                            break;
                        case 11:
                            pen = new Pen(Color.Red, 1);
                            //绘制
                            PointF p1 = new PointF(x + 5, y - 5);
                            PointF p2 = new PointF(x, y + 5);
                            PointF p3 = new PointF(x + 10, y + 5);
                            PointF[] points = new PointF[3];
                            Brush myBrush = new SolidBrush(Color.Green);
                            points[0] = p1;
                            points[1] = p2;
                            points[2] = p3;
                            e.Graphics.FillPolygon(myBrush, points, FillMode.Alternate);
                            e.Graphics.DrawPolygon(pen, points);
                            break;
                        //case (int)LineType.LineWithPoints:
                        default:
                            pen = new Pen(Color.Black, 1);
                            break;
                    }
                    if (e.Index < 12)
                    {
                        //e.Graphics.DrawLine(pen, new PointF(x, y), new PointF(8 * x, y));//绘制线
                        //设置后面的字符串
                        Rectangle Rect = new Rectangle(rect.Location, new Size(5 * (int)x, rect.Height));
    
                        //文本内容显示区域
                        Rectangle textRect =
                                new Rectangle(Rect.Right + 2, Rect.Y, e.Bounds.Width - Rect.Width, e.Bounds.Height - 2);
    
                        //文本格式垂直居中
                        StringFormat strFormat = new StringFormat();
                        strFormat.LineAlignment = StringAlignment.Center;
                        e.Graphics.DrawString((e.Index + 1).ToString(), new Font("微软雅黑", 12), Brushes.Black, textRect, strFormat);
                    }
                }
            }
        }
    }
    
    

    带图片的列表

    在这里插入图片描述

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace ShowState
    {
        /// <summary>
        /// 下拉框  下拉列表 图片显示
        /// </summary>
        public partial class ComboBoxImg : ComboBox
        {
            public ComboBoxImg()
            {
                InitializeComponent();
                DrawMode = DrawMode.OwnerDrawFixed;
                DropDownStyle = ComboBoxStyle.DropDownList;
                ItemHeight = 50;
                Width = 40;
            }
    
            public ComboBoxImg(IContainer container)
            {
                container.Add(this);
                InitializeComponent();
    
                DrawMode = DrawMode.OwnerDrawFixed;
                DropDownStyle = ComboBoxStyle.DropDownList;
                ItemHeight = 200;
                Width = 40;
            }
    
            protected override void OnDrawItem(DrawItemEventArgs e)
            {
                if (Items.Count == 0 || e.Index == -1)
                    return;
                if ((e.State & DrawItemState.Selected) != 0)
                {
                    //渐变画刷
                    LinearGradientBrush brush = new LinearGradientBrush(e.Bounds, Color.FromArgb(255, 251, 237),
                                                     Color.FromArgb(255, 236, 181), LinearGradientMode.Vertical);
                    //填充区域
                    Rectangle borderRect = new Rectangle(3, e.Bounds.Y, e.Bounds.Width - 5, e.Bounds.Height - 2);
    
                    e.Graphics.FillRectangle(brush, borderRect);
    
                    //画边框
                    Pen pen = new Pen(Color.FromArgb(229, 195, 101));
                    e.Graphics.DrawRectangle(pen, borderRect);
                }
                else
                {
                    SolidBrush brush = new SolidBrush(Color.FromArgb(255, 255, 255));
                    e.Graphics.FillRectangle(brush, e.Bounds);
                }
    
                //获得项图片,绘制图片
                ItemEx item = (ItemEx)Items[e.Index];
                Image img = item.Image;
    
                //图片绘制的区域
                Rectangle imgRect = new Rectangle(6, e.Bounds.Y + 3, 45, 45);
                e.Graphics.DrawImage(img, imgRect);
    
                //文本内容显示区域
                Rectangle textRect =
                        new Rectangle(imgRect.Right + 2, imgRect.Y, e.Bounds.Width - imgRect.Width, e.Bounds.Height - 2);
    
                //获得项文本内容,绘制文本
                String itemText = Items[e.Index].ToString();
    
                //文本格式垂直居中
                StringFormat strFormat = new StringFormat();
                strFormat.LineAlignment = StringAlignment.Center;
                e.Graphics.DrawString(itemText, new Font("微软雅黑", 12), Brushes.Black, textRect, strFormat);
                base.OnDrawItem(e);
            }
    
        }
    
        /// <summary>
        /// 下拉框  下拉列表 图片显示
        /// </summary>
        public class ItemEx
        {
            /// <summary>
            /// 图片显示
            /// </summary>
            /// <param name="text">文本</param>
            /// <param name="img">图片(图片路径)</param>
            public ItemEx(string text, Image img)
            {
                Text = text;
                Image = img;
            }
    
            public string Text { get; set; }
            public Image Image { get; set; }
    
            public override string ToString()
            {
                return Text;
            }
        }
    }
    
    

    组件编写完之后,进入工具箱,就能看到当前项目中我们自定义的组件了,使用方法跟普通控件方法完全相同,直接拖到窗体即可

    在这里插入图片描述

    展开全文
  • swift-ios下拉框控件

    2019-08-15 02:48:12
    ios下拉框控件
  • NULL 博文链接:https://chenjumin.iteye.com/blog/386967
  • 场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: ... DevExpress的下拉框控件LookUpEdit的使用、添加item选项值、修改默认显示值: https://blog.csdn.net/BADAO_LIUMANG_QI...

    场景

    Winform控件-DevExpress18下载安装注册以及在VS中使用:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243

    DevExpress的下拉框控件LookUpEdit的使用、添加item选项值、修改默认显示值:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102464577

    注:

    博客主页:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    DevExpress.XtraEditors.ComboBoxEdit

    声明下拉框对象

    DevExpress.XtraEditors.ComboBoxEdit comboBox = new DevExpress.XtraEditors.ComboBoxEdit();

    获取下拉选项items对象

    ComboBoxItemCollection coll = comboBox.Properties.Items;

    下拉框赋值

    foreach(ControlModelItem controlModelItem in controlModelItems)
                {
                    coll.Add(controlModelItem);
                  
                }

    设置选中项

    comboBox.SelectedItem
    
    comboBox.SelectedIndex

    效果

     

    展开全文
  • Jquery可编辑下拉框控件,web开发非常实用,有多个功能设置
  • 通过 bootstrap-table 的Column 配置项中的formatter,将获取到的数据转换为包含数据的 select 控件。然后根据用户选择项更新对应单元格数据,最后通过getallselection方法获取所选行数据
  • VB6.0增强combo下拉框控件的功能,是一个XP风格下拉列表框,自定义了很多下拉框增强功能,比如追加项目、删除实际项目、禁止编辑、仅清除列表框中显示的文字、载入内容、列表框显示文字、总项目实际数量、复制...
  • 下拉框控件.7z

    2019-06-04 17:37:47
    下拉框中的数据是(2019-05-27~2019-06-02)、(2019-06-03~2019-06-09)、(2019-06-10~2019-06-16)、(2019-06-117~2019-06-23)每一个选项都是从周一到周日,根据年月动态生成。下载就可以运行
  • WPF 下拉框树状通用控件,下载即可使用
  • VB下拉框控件 网格控件应用实例,一个基于VB的网格下拉框控件,也就是让下拉框拉出的不是列表式数据,而是表格形式的数据,点击表格中的任意格数据,即可选中数据,换换形式,或许更新颖。
  • JQuery实现ImageSelect图片下拉框控件

    热门讨论 2011-12-22 15:57:58
    实用性很强.JQuery实现的图片下拉框
  • 控件以xml为数据源,可以进行输入的多属性自动适配
  • 二、控件的设置 ——日期控件(开始时间和结束时间一样): 1.控件值 (='')这样的设置是为了选项一开始为空,效果如下 2.格式的话你看着你的数据格式来设置,注意写的sql也要对应。 ——平台名称、店铺...

    上一篇有sql的查询语句和参数的设置。

    二、控件的设置

    ——日期控件(开始时间和结束时间一样):

     

     1.控件值 (='')这样的设置是为了选项一开始为空,效果如下

    2.格式的话你看着你的数据格式来设置,注意写的sql也要对应。

    ——平台名称、店铺名称、产品系列控件操作一样,这里就只展示一种啦。

    展开全文
  • 基于jq.模仿select动作。。 好看使用。很不错。欢迎大家给意见、
  • 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果...
  • 两个日期控件控制一段时间,三个下拉框控件 下面是我展示的效果,数据是临时用来测试的,展示的决策报表是2021.10.01-2021.10.21的这个时间段对应平台、店铺和产品系列的数据: 当我全部不选的时候展示的...
  • 增强型的FlexComboBox控件,一款VB下拉框控件,带图标,支持模糊查找,模拟下拉框提示等功能,英文版,附上了源代码,便于二次开发和学习研究。
  • 下面小编就为大家带来一篇可输入文字查找ajax下拉框控件 ComBox的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 简单javavscript实现的可输入下拉框(仿VC的comobox),用于html网页开发。 不懂代码的,可直接在页面中插入该源码实现,方便易用。
  • 压缩文件里包含js,css文件,以及示例
  • 一款可以下拉搜索html下拉框控件-附件资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,264
精华内容 13,305
关键字:

下拉框控件名