精华内容
下载资源
问答
  • 非常值得收藏,下载的源码资源: 1. 代码源自网络,并添加部分示例代码; 2. 自定义Combobx下拉框,支持基础控件下拉,也支持自定义控件下拉,扩展十分方便;
  • C# 实现WinForm带复选下拉列表DLL控件,ComboBox WinForm应用,是一个DLL的源码,实现窗口中带复选下拉列表,源码编译后生成UCComboBox.dll,你在项目中添加引用就可使用了。 运行环境:Visual Studio2010
  • 下拉组合框控件演示

    2018-11-13 09:28:48
    下拉组合框控件演示: 关键代码: combobox={cls="combobox";left=19;top=58;right=446;bottom=84;edge=1;items={};mode="dropdown";z=5}; //下拉组合框列表的选项集合 winform.combobox.items ={ `选项1`; `...

    下拉组合框控件演示:
    下拉组合框控件演示

    下拉组合框控件演示

    下拉组合框控件演示

    关键代码:

    combobox={cls="combobox";left=19;top=58;right=446;bottom=84;edge=1;items={};mode="dropdown";z=5};
    
    //下拉组合框列表的选项集合
    winform.combobox.items ={
        `选项1`;
        `选项2`;
        `选项3`;
        `选项4`;
        `选项5`
    }

    完整代码:

    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="下拉组合框控件演示";right=561;bottom=469)
    winform.add(
    button={cls="button";text="确定";left=460;top=57;right=545;bottom=79;z=2};
    combobox={cls="combobox";left=19;top=58;right=446;bottom=84;edge=1;items={};mode="dropdown";z=5};
    richedit={cls="richedit";left=19;top=130;right=546;bottom=458;edge=1;multiline=1;z=3};
    static={cls="static";text="下拉组合框控件演示";left=175;top=12;right=351;bottom=34;font=LOGFONT(h=-19);transparent=1;z=1};
    static2={cls="static";text="结果:";left=20;top=106;right=68;bottom=124;transparent=1;z=4}
    )
    /*}}*/
    
    //下拉组合框列表的选项集合
    winform.combobox.items ={
        `选项1`;
        `选项2`;
        `选项3`;
        `选项4`;
        `选项5`
    }
    
    winform.show() 
    win.loopMessage();

    转载于:https://blog.51cto.com/10466450/2316149

    展开全文
  • 这一节给大家演示一个具有多选功能的下拉列表框,其实就是一个文本框和checkboxlist组合实现的用户控件,换个角度来实现自定义控件。 先来看下效果图吧,我会分几个步骤来具体讲解这个文本框的实现。    1.界面...
          这一节给大家演示一个具有多选功能的下拉列表框,其实就是一个文本框和checkboxlist组合实现的用户控件,换个角度来实现自定义控件。
    

    先来看下效果图吧,我会分几个步骤来具体讲解这个文本框的实现。

                                            

        1.界面实现

         我们先来看下界面效果怎样实现,然后再讲解具体的功能性实现。

          先创建一个用户控件,当然是继承UserControl类,这个界面需要用到以下控件来实现

         下拉按钮:是一个button控件

         文本框:显示选中的内容,

         多选列表框: checkboxlist

         全选/取消:是两个LABEL控件

          右下角的黑三角:是一个LABEL控件,可实现拉长下拉列表框.

          窗体:点击下拉按钮,实际是弹出一个窗体,下拉列表框中的控件都在这个窗体中显示

        首先看下下拉按钮的实现

       

    /// <summary>
        /// 重写BUTTON
        /// </summary>
        public class ButtonS : Button
        {
            public ButtonS()
            {
                //防止重绘控件出现闪烁
                this.SetStyle(ControlStyles.UserPaint, true);
                this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
                this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            }
            ButtonState state;
            //当按钮被按下
            protected override void OnMouseDown(MouseEventArgs mevent)
            {
                state = ButtonState.Pushed;
                base.OnMouseDown(mevent);
            }
    
            //当按钮被释放
            protected override void OnMouseUp(MouseEventArgs mevent)
            {
                state = ButtonState.Normal;
                base.OnMouseUp(mevent);
            }
    
            protected override void OnPaint(PaintEventArgs pevent)
            {
                base.OnPaint(pevent);
                System.Windows.Forms.ControlPaint.DrawComboButton(pevent.Graphics, 0, 0, this.Width, this.Height, state);
            }
        }


       接下来再看下具有拉动功能的LABEL

      

    /// <summary>
        /// 重写LABEL
        /// </summary>
        public class LabelS : Label
        {
            public LabelS()
            {
                //控件绘制的时候减少闪烁
                this.SetStyle(ControlStyles.UserPaint, true);
                this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
                this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            }
    
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                System.Windows.Forms.ControlPaint.DrawSizeGrip(e.Graphics, Color.Black, 1, 0, this.Size.Width, this.Size.Height);
            }
        }


     接下来,我们动态用代码生成这些控件,并设置控件的布局,

     现在构造函数里生成这些控件,然后在用户控件的ComCheckBoxList_Layout事件里面布局这些控件,代码如下

      

     /// <summary>
        /// 带下拉框的用户控件
        /// </summary>
        public partial class ComCheckBoxList : UserControl
        {
            private TextBox tbSelectedValue;
            private ButtonS btnSelect;//下拉箭头
            private LabelS lbGrip;//此LABEL用于设置可以拖动下拉窗体变化
    
            private CheckedListBox checkListBox;
            private Label lbSelectAll;//全选
            private Label lbSelectNo;//取消
    
            private Form frmCheckList;
    
            private Panel pnlBack;
            private Panel pnlCheck;
    
            private System.Drawing.Point DragOffset; //用于记录窗体大小变化的位置
            public ComCheckBoxList()
            {
                InitializeComponent();
                this.Name = "comBoxCheckBoxList";
                this.Layout+=new LayoutEventHandler(ComCheckBoxList_Layout);
    
                //生成控件
                tbSelectedValue = new TextBox();
                tbSelectedValue.ReadOnly = true;
                tbSelectedValue.BorderStyle = BorderStyle.None;
    
                //下拉箭头
                this.btnSelect = new ButtonS();
                btnSelect.FlatStyle = FlatStyle.Flat;
                btnSelect.Click+=new EventHandler(btnSelect_Click);
    
                //全选
                this.lbSelectAll = new Label();
                lbSelectAll.BackColor = Color.Transparent;
                lbSelectAll.Text = "全选";
                lbSelectAll.Size = new Size(40, 20);
                lbSelectAll.ForeColor = Color.Blue;
                lbSelectAll.Cursor = Cursors.Hand ;
                lbSelectAll.TextAlign = ContentAlignment.MiddleCenter;
                lbSelectAll.Click+=new EventHandler(lbSelectAll_Click);
    
                //取消
                lbSelectNo = new Label();
                lbSelectNo.BackColor = Color.Transparent;
                lbSelectNo.Text = "取消";
                lbSelectNo.Size = new Size(40, 20);
                lbSelectNo.ForeColor = Color.Blue;
                lbSelectNo.Cursor = Cursors.Hand;
                lbSelectNo.TextAlign = ContentAlignment.MiddleCenter;
                lbSelectNo.Click+=new EventHandler(lbSelectNo_Click);
    
                //生成checkboxlist
                this.checkListBox = new CheckedListBox();
                checkListBox.BorderStyle = BorderStyle.None;
                checkListBox.Location = new Point(0,0);
                checkListBox.CheckOnClick = true;
                checkListBox.ScrollAlwaysVisible = true;
                checkListBox.LostFocus +=new EventHandler(checkListBox_LostFocus);
                checkListBox.ItemCheck+=new ItemCheckEventHandler(checkListBox_ItemCheck);
    
                //窗体
                frmCheckList = new Form();
                frmCheckList.FormBorderStyle = FormBorderStyle.None;
                frmCheckList.StartPosition = FormStartPosition.Manual;
                frmCheckList.BackColor = SystemColors.Control;
                frmCheckList.ShowInTaskbar = false;
    
                //可拖动窗体大小变化的LABEL
                lbGrip = new LabelS();
                lbGrip.Size = new Size(9,18);
                lbGrip.BackColor = Color.Transparent;
                lbGrip.Cursor = Cursors.SizeNWSE;
                lbGrip.MouseDown+=new MouseEventHandler(lbGrip_MouseDown);
                lbGrip.MouseMove+=new MouseEventHandler(lbGrip_MouseMove);
    
                //panel
                pnlBack = new Panel();
                pnlBack.BorderStyle = BorderStyle.Fixed3D;
                pnlBack.BackColor = Color.White;
                pnlBack.AutoScroll = false;
    
                //
                pnlCheck = new Panel();
                pnlCheck.BorderStyle = BorderStyle.FixedSingle;
                pnlCheck.BackColor = Color.White; ;
    
                SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
                SetStyle(ControlStyles.ResizeRedraw, true);
    
                pnlBack.Controls.Add(tbSelectedValue);
                pnlBack.Controls.Add(btnSelect);
    
                this.Controls.Add(pnlBack);
    
                pnlCheck.Controls.Add(checkListBox);
                pnlCheck.Controls.Add(lbSelectAll);
                pnlCheck.Controls.Add(lbSelectNo);
                pnlCheck.Controls.Add(lbGrip);
                this.frmCheckList.Controls.Add(pnlCheck);
    
              
            }
    
            private void ReloationGrip()
            {
    
                lbGrip.Top = this.frmCheckList.Height - lbGrip.Height - 1;
                lbGrip.Left = this.frmCheckList.Width - lbGrip.Width - 1;
    
                lbSelectAll.Left =5;
                lbSelectAll.Top = frmCheckList.Height - lbSelectAll.Height;
    
                lbSelectNo.Left = 50;
                lbSelectNo.Top = frmCheckList.Height - lbSelectNo.Height;
          
    
            }
    
            #region 事件
            
          
            //布局
            private void ComCheckBoxList_Layout(object sender,LayoutEventArgs e)
            {
                this.Height = tbSelectedValue.Height + 6;
                this.pnlBack.Size = new Size(this.Width, this.Height - 2);
    
                //设置按钮的位置
                this.btnSelect.Size = new Size(16, this.Height - 6);
                btnSelect.Location = new Point(this.Width - this.btnSelect.Width - 4, 0);
    
                this.tbSelectedValue.Location = new Point(2, 2);
                this.tbSelectedValue.Width = this.Width - btnSelect.Width - 4;
    
                checkListBox.Height =150;
    
                //设置窗体
                this.frmCheckList.Size = new Size(this.Width,this.checkListBox.Height);
                this.pnlCheck.Size =frmCheckList.Size;
               
    
                this.checkListBox.Width = this.frmCheckList.Width;
                this.checkListBox.Height = this.frmCheckList.Height-lbSelectNo.Height;
    
                ReloationGrip();
    
    
            }
            /// <summary>
            /// 单价下拉框
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void btnSelect_Click(object sender,EventArgs e)
            {
                if (this.frmCheckList.Visible == false)
                {
                    Rectangle rec = this.RectangleToScreen(this.ClientRectangle);
                    this.frmCheckList.Location = new Point(rec.X, rec.Y + this.pnlBack.Height);
                    this.frmCheckList.Show();
                    this.frmCheckList.BringToFront();
    
                    ReloationGrip();
                }
                else
                    this.frmCheckList.Hide();
            }
    
            //全选事件
            private void lbSelectAll_Click(object sender, EventArgs e)
            { 
            
            }
            //取消
            private void lbSelectNo_Click(object sender,EventArgs e)
            { 
            
            }
    
            private void checkListBox_LostFocus(object sender, EventArgs e)
            {
                //如果鼠标位置在下拉框按钮的以为地方,则隐藏下拉框
                if (!this.btnSelect.RectangleToScreen(this.btnSelect.ClientRectangle).Contains(Cursor.Position))
                {
                    frmCheckList.Hide();
                }
            }
    
            private void checkListBox_ItemCheck(object sender, ItemCheckEventArgs e)
            {
    
            }
    
            /// <summary>
            /// 鼠标按下
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void lbGrip_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button==MouseButtons.Left)
                {
                    int offsetX = System.Math.Abs(Cursor.Position.X - frmCheckList.RectangleToScreen(this.frmCheckList.ClientRectangle).Right);
                    int offsetY = System.Math.Abs(Cursor.Position.Y - frmCheckList.RectangleToScreen(this.frmCheckList.ClientRectangle).Bottom);
                    this.DragOffset = new Point(offsetX, offsetY);
                }
            }
    
            /// <summary>
            /// 鼠标移动
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void lbGrip_MouseMove(object sender,MouseEventArgs e)
            {
                if (e.Button==MouseButtons.Left)
                {
                    //获取拉伸长度
                    int curWidth = Cursor.Position.X - frmCheckList.Location.X;
                    int curHeight = Cursor.Position.Y - frmCheckList.Location.Y;
                      if (curWidth<this.Width)
    	              {
    		                curWidth=this.Width;
    	               }
    
                      if (curHeight<checkListBox.Height)
    	              {
    		                curHeight=checkListBox.Height;
    	              }
              
                    this.frmCheckList.Size=new Size(this.Width,curHeight);
                    this.pnlCheck.Size=frmCheckList.Size;
                    this.checkListBox.Height=(this.frmCheckList.Height-lbGrip.Height)<50?50:this.frmCheckList.Height-lbGrip.Height;
    
                   ReloationGrip();
                    SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
                    SetStyle(ControlStyles.ResizeRedraw, true);
                    SetStyle(ControlStyles.UserPaint, true);
                    SetStyle(ControlStyles.AllPaintingInWmPaint, true);
                    
    
    
                }
            }
    
            #endregion
        }


      这样用户控件的布局以及完成,我们编译项目,就可以拖动用户控件到窗体上,看到效果了

     

    2. 绑定和添加数据

            2.1 从数据库中读取数据绑定显示

                   既然可以从数据库中读取数据,数据源就可以是DATATABLE,我们在这里为用户控件设置数据源,以及绑定后,要显示的字段,以及对于的值字段。

                  为控件添加以下属性

                

        /// <summary>
            /// 设置数据源
            /// </summary>
            public object DataSource
            {
                set
                {
                    this.checkListBox.DataSource = value;
                }
                get
                {
                    return checkListBox.DataSource;
                }
            }
            /// <summary>
            /// 设置值
            /// </summary>
            public string ValueMember
            {
                set
                {
                    checkListBox.ValueMember = value;
                }
            }
            /// <summary>
            /// 设置显示名称
            /// </summary>
            public string DisplayMember
            {
                set
                {
                    checkListBox.DisplayMember = value;
                }
            }


              2.2 添加项

               我们也可以不绑定数据源,为控件添加项,所有这里我们要为控件添加一个方法,可以实现手动添加项。

               

      /// <summary>
            /// 添加项
            /// </summary>
            public int AddItems(object value)
            {
                checkListBox.Items.Add(value);
                return checkListBox.Items.Count;
            }


        这样我们就为用户控件实现了两种显示数据的方法。下面我们看看在窗体中怎样使用这两种方法

         在窗体上放置两个按钮,然后绑定数据

       

     private void button1_Click(object sender, EventArgs e)
            {
                //绑定数据源
                DataTable dt = new DataTable();
                DataColumn dc1 = new DataColumn("weibo", typeof(System.String));
                dt.Columns.Add(dc1);
    
                DataColumn dc2 = new DataColumn("mail", typeof(System.String));
                dt.Columns.Add(dc2);
    
                DataColumn dc3 = new DataColumn("blog", typeof(System.String));
                dt.Columns.Add(dc3);
    
    
                for (int i = 0; i < 50; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = "下里巴人simple";
                    dr[1] = "524300045@qq.com";
                    dr[2] = "msdn" + i.ToString();
                    dt.Rows.Add(dr);
                }
                comCheckBoxList1.DataSource = dt;
                comCheckBoxList1.DisplayMember = "weibo";
                comCheckBoxList1.ValueMember = "mail";
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                //添加项
                comCheckBoxList2.AddItems("邮箱:524300045@qq.com");
                comCheckBoxList2.AddItems("微博:下里巴人simple");
            }

      至此,第二步骤已经完成,可以实现大部分功能了.

       3.事件处理

         这里我们定义下全选事件,取消事件,和某项选中状态更改时发生的事件

       

      //全选事件
            private void lbSelectAll_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < checkListBox.Items.Count; i++)
                {
                    checkListBox.SetItemChecked(i, true);
                }
                tbSelectedValue.Text ="已选择"+checkListBox.Items.Count.ToString()+"项";
            }
            //取消
            private void lbSelectNo_Click(object sender,EventArgs e)
            {
                for (int i = 0; i < checkListBox.Items.Count; i++)
                {
                    checkListBox.SetItemChecked(i, false);
                }
                tbSelectedValue.Text = "没有选择!";
            }


         这里我们自定义一个选项状态更改时发生的事件,供别人使用的时候自行处理选择状态更改逻辑,需要我们自定义事件

      

      //单击列表项状态更改事件
            public delegate void CheckBoxListItemClick(object sender, ItemCheckEventArgs e);
            public event CheckBoxListItemClick ItemClick;

       

       private void checkListBox_ItemCheck(object sender, ItemCheckEventArgs e)
            {
                ItemClick(sender, e);
    
               //获取选中的数量
                int nCount = this.checkListBox.CheckedItems.Count;
                if (this.checkListBox.CheckedItems.Contains(this.checkListBox.Items[e.Index]))
                {
    
                    if (e.NewValue != CheckState.Checked)
                    {
                        nCount--;
                    }
                }
                else
                {
                    if (e.NewValue == CheckState.Checked)
                    {
                        nCount++;
                    }
                }
                tbSelectedValue.Text = "已选择" + nCount.ToString() + "项";
           
            }

      

      /// <summary>
            /// 选项集合
            /// </summary>
            public CheckedListBox.ObjectCollection Items
            {
                get
                {
                    return checkListBox.Items;
                }
            }
    
            /// <summary>
            /// 获取选中项的文本
            /// </summary>
            /// <param name="item"></param>
            /// <returns></returns>
            public string GetItemText(object item)
            {
                return checkListBox.GetItemText(item);
            }


     

    然后当用户把控件拖放到窗体上,我们就可以使用该事件了。

      

      /// <summary>
            /// 获取选中项的文本
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void comCheckBoxList1_ItemClick(object sender, ItemCheckEventArgs e)
            {
              string text=comCheckBoxList1.GetItemText(comCheckBoxList1.Items[e.Index]);
              MessageBox.Show(text);
            }


        到此,这个控件的基本功能已经实现完成。再看下效果图

               

         demo下载:http://download.csdn.net/detail/zx13525079024/4454696

    展开全文
  • ListView 中实现可编辑文本或双击出现下拉列表框 重写listview空间,在控件中添加下拉框和文本框
  • 本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。  1. 在DataGrid中加入ComboBox列;  2. 把在DataGrid中的修改保存到对应的网格;    3. 设置DataGrid中...
    本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。 
    
      1. 在DataGrid中加入ComboBox列;
    
      2. 把在DataGrid中的修改保存到对应的网格;
     
      3. 设置DataGrid中网格的焦点。
    
      下面是整个源代码,一些功能可以看注释。
    
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    
    namespace DataGridTest
    {
    	public class Form1 : System.Windows.Forms.Form
    	{
    		private System.Windows.Forms.DataGrid dgdFunctionArea;
    		private DataTable dtblFunctionalArea;
    		private System.Windows.Forms.Button buttonFocus;
    		private System.ComponentModel.Container components = null;
    
    		public Form1()
    		{
    			InitializeComponent();
    			PopulateGrid();
    		}
    
    		protected override void Dispose( bool disposing )
    		{
    			if( disposing )
    			{
    				if (components != null) 
    				{
    					components.Dispose();
    				}
    			}
    			base.Dispose( disposing );
    		}
    
    		#region Windows 窗体设计器生成的代码
    
    		private void InitializeComponent()
    		{
    			this.dgdFunctionArea = new System.Windows.Forms.DataGrid();
    			this.buttonFocus = new System.Windows.Forms.Button();
    			((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();
    			this.SuspendLayout();
    			// 
    			// dgdFunctionArea
    			// 
    			this.dgdFunctionArea.DataMember = "";
    			this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    
    			this.dgdFunctionArea.Location = new System.Drawing.Point(4, 8);
    			this.dgdFunctionArea.Name = "dgdFunctionArea";
    			this.dgdFunctionArea.Size = new System.Drawing.Size(316, 168);
    			this.dgdFunctionArea.TabIndex = 0;
    			// 
    			// buttonFocus
    			// 
    			this.buttonFocus.Location = new System.Drawing.Point(232, 188);
    			this.buttonFocus.Name = "buttonFocus";
    			this.buttonFocus.Size = new System.Drawing.Size(84, 23);
    			this.buttonFocus.TabIndex = 1;
    			this.buttonFocus.Text = "获取焦点";
    			this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);
    			// 
    			// Form1
    			// 
    			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    			this.ClientSize = new System.Drawing.Size(332, 217);
    			this.Controls.Add(this.buttonFocus);
    			this.Controls.Add(this.dgdFunctionArea);
    			this.Name = "Form1";
    			this.Text = "Form1";
    			((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();
    			this.ResumeLayout(false);
    
    		}
    		#endregion
    		/// <summary>
    		/// 应用程序的主入口点。
    		/// </summary>
    		[STAThread]
    		static void Main() 
    		{
    			Application.Run(new Form1());
    		}
    		//初始化DataGrid
    		private void PopulateGrid()
    		{
    			//创建一个DataTable对象,包括四列,前三列为String,最后一列为Boolean。
    			dtblFunctionalArea = new DataTable ("FunctionArea");
    			string[] arrstrFunctionalArea = new string [3]{"Functional Area","Min","Max"};
    			DataColumn dtCol = null;
    			//创建String列 
    			for(int i=0; i< 3;i++)
    			{ 
    				dtCol = new DataColumn(arrstrFunctionalArea[i]);
    				dtCol.DataType = Type.GetType("System.String");
    				dtCol.DefaultValue = "";
    				dtblFunctionalArea.Columns.Add(dtCol); 
    			} 
    
    			//创建Boolean列,用CheckedBox来显示。 
    			DataColumn dtcCheck = new DataColumn("IsMandatory");
    			dtcCheck.DataType = System.Type.GetType("System.Boolean");
    			dtcCheck.DefaultValue = false;
    			dtblFunctionalArea.Columns.Add(dtcCheck);
    
    			//把表绑定到DataGrid
    			dgdFunctionArea.DataSource = dtblFunctionalArea; 
    
    			//为DataGrid加载DataGridTableStyle样式
    			if(!dgdFunctionArea.TableStyles.Contains("FunctionArea"))
    			{
    				DataGridTableStyle dgdtblStyle = new DataGridTableStyle();
    				dgdtblStyle.MappingName = dtblFunctionalArea.TableName;
    				dgdFunctionArea.TableStyles.Add(dgdtblStyle);
    				dgdtblStyle.RowHeadersVisible = false;
    				dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;
    				dgdtblStyle.AllowSorting = false;
    				dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107);
    				dgdtblStyle.RowHeadersVisible = false;
    				dgdtblStyle.HeaderForeColor = Color.White;
    				dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F, 
    					System.Drawing.FontStyle.Bold, 
    					System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
    				dgdtblStyle.GridLineColor = Color.DarkGray;
    				dgdtblStyle.PreferredRowHeight = 22;
    				dgdFunctionArea.BackgroundColor = Color.White; 
    
    				//设置列的宽度 
    				GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;
    				colStyle[0].Width = 100;
    				colStyle[1].Width = 50;
    				colStyle[2].Width = 50;
    				colStyle[3].Width = 80;
    			}
    
    			DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0]; 
    
    			ComboBox cmbFunctionArea = new ComboBox();
    			cmbFunctionArea.Items.AddRange(new object[]{"选项一","选项二","选项三"});
    			cmbFunctionArea.Cursor = Cursors.Arrow;
    			cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList;
    			cmbFunctionArea.Dock = DockStyle.Fill;
    
    			//在选定项发生更改并且提交了该更改后发生
    
    			cmbFunctionArea.SelectionChangeCommitted += new 	EventHandler(cmbFunctionArea_SelectionChangeCommitted); 
    
    			//把ComboBox添加到DataGridTableStyle的第一列
    
    			dgtb.TextBox.Controls.Add(cmbFunctionArea); 
    
    		}
    
    		//设置焦点模拟
    
    		private void GetFocus(int row,int col)
    		{
    			//先把焦点移动到DataGrid
    			this.dgdFunctionArea.Focus(); 
    			//把焦点移动到DataGridCell
    			DataGridCell dgc = new DataGridCell(row,col); 
    			this.dgdFunctionArea.CurrentCell = dgc; 
    			DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[col]; 
    
    			//设置焦点
    
    			dgtb.TextBox.Focus();
    		} 
    
    		//把Combobox上修改的数据提交到当前的网格
    
    		private void cmbFunctionArea_SelectionChangeCommitted(object sender, EventArgs e)
    		{
    			this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
    
    		} 
    
    		//设置新的焦点
    
    		private void buttonFocus_Click(object sender, System.EventArgs e)
    		{
    			//焦点模拟,这里设置第三行第一列
    			GetFocus(2,0);
    		}
    	}
    
    } 
    
    
    展开全文
  • 也就是绑定一些下拉列表或者一些列表显示等,以便我们方便选择数据操作,常见的字典绑定操作就是对下拉列表的处理,本篇随笔是基于DevExpress界面的一些处理操作,原理也适用于常规Winform界面或者DotNetBar控件界面...
  • C#中为DataGrid添加下拉列表框 WinForm

    千次阅读 2005-12-27 11:41:00
    在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。 1. 在DataGrid中加入ComboBox列; 2. 把在DataGrid中的修改保存到对应的网格; 3. 设置DataGrid中网格的焦点。 下面是整个源...
  • Winform控件之选择类控件

    千次阅读 2015-05-26 18:38:33
    选择类控件主要包含复选框控件(CheckBox),单选框控件(RadioButton),下拉组合框控件(ComboBox),列表控件(ListBox),复选组控件(CheckListBox)和数值选择控件(NumericUpDown)等。  一,CheckBox控件和RadioButton...
  • 使用 (可通过单击箭头以显示或隐藏控件的表示选择控件下拉列表。ComboBox 在控件的文本框允许用户选择项目从下拉列表或选择输入新文本。 介绍: 1.属性 常用属性 Name 获取或设置控件的名称。 Text ...
  • DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一般在Winform开发中根据情况混合使用这些控件,不过整体...
  • WinForm公共控件

    2016-09-22 08:38:00
    公共控件:1、Button:按钮 用户点击时触发事件 行为属性...3、ComboBox:下拉列表框 1、数据填进去 可以在后台 将要填进去的内容放到 Items集合中去 comboBox1.Items.Add() 2、如何取到选中的数据 comboBox1.Sel...
  • C# ComboBox:组合框控件

    千次阅读 2019-06-11 23:19:40
    在C#WinForm开发中组合框(ComboBox)控件也称下拉列表框, 用于选择所需的选项,例如在注册学生信息时选择学历、专业等。 使用组合框可以有效地避免非法值的输入。 在组合框中也有一些经常使用的属性,如下表所...
  • Winform常用控件及其属性

    千次阅读 2019-09-21 21:53:34
    ComboBox组合框 (就是有下拉列表的叫组合框) ListBox列表框 (多行文本框) MenuStrip菜单栏 ToolStripMenuItem菜单项 ToolStrip工具栏 StatusStrip状态栏 TabControl选项卡 PictureBox图片框 Ima...
  • winform(公共控件

    2016-11-14 10:54:00
    一、客户端设计思路 1.理顺设计思路,架构框架 2.设计界面 3.编写后台代码 4.数据库访问 二、公共控件 ... ⑴Enabled :确定是否启用控件 ...3、ComboBox(显示一个可编辑的文本框,可下拉选择...
  • 前面介绍了两篇关于ComboBox扩展和美化的文章:C# WinForm控件美化扩展系列之ComboBox组合框控件和C# WinForm控件美化扩展系列之给...(3) 在下拉列表框的项中显示图标,项可以缩进。 (4) 在ComboBox控件中也显示图标。
  • 最近一直在做一些技术性的研究和框架改进工作,博客也落下好几天没有更新了,也该是时候静下心来,总结这段时间的一些技术改进的经验了。和上一阶段的CRM系统开发和技术研究一样,...本随笔主要介绍在下拉列表中展示...
  • 组合ComboBox是一个很重要的控件。ComboBox 显示与一个 ...ComboBox 的默认行为是显示一个编辑字段,该字段具有一个隐藏的下拉列表。此时,DropDownStyle的默认值是DropDown,此时有个文本的输入,如果设置为D...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

winform下拉列表框控件