c# combbox 怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# combbox 怎么用相关的知识,希望对你有一定的参考价值。

相信你在网页上也操作过这个控件,也了解它的用途吧,最大的优点就是方便用户选择内容,但comboBox需要我们编程人员添加上去,有两种方法,第一种,就是手动添加,这个简单,但有缺陷,当我在数据库插入一条新的数据时,comboBox不能自动更新数据,所以我在这里向你提供第二种方法,用代码的方式绑定comboBox的数据源!代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data;

using System.Data.SqlClient;

namespace Combox

    public partial class Form1 : Form

    

        public Form1()

        

            InitializeComponent();

        

     

        //定义查询方法,获取到数据库相应的数据

        public DataTable SelectContent(string strSql)

        

            DataTable dt=null;

            //连接字符串

            string connStr = "server=.;database=jiajiaodb;uid=sa;pwd=123456";

            //创建连接对象

            using (SqlConnection conn = new SqlConnection(connStr))

            

                //打开连接对象

                conn.Open();

                //创建命令对象

                SqlCommand cmd = new SqlCommand(strSql,conn);

                SqlDataReader reader = cmd.ExecuteReader();

                //判断reader里面是否有值。保存到dt中

                if (reader != null && reader.HasRows)

                

                    dt = new DataTable();

                    dt.Load(reader);

                

            

            return dt;

        

        

        private void Form1_Load(object sender, EventArgs e)

        

           

            //实例化DataTable对象,来接收方法的返回值,

            DataTable ds = new DataTable();

            //SQL语句

            string strSql="select * from userInfo";

            //调用查询方法,获取数据

            ds = SelectContent(strSql);

            //绑定ComboBox数据源

            this.cbName.DataSource = ds;

            //指定要显示的字段,这里我要显示的,用户表中的姓名字段

            this.cbName.DisplayMember = "userName";

        

    

结果如下图:

参考技术A Winform中ComboBox这个控件与WebForm中DropDownList提供的功能是一样的.但用DropDownList习惯了的朋友再来用ComboBox会发现,ComboBox一点也不好用.那,在这里其实是不能用DropDownList的操作方式来操作ComboBox.
------
如果绑定固定数据,可以使用.
ComboBox1.Items.Add("项1");
ComboBox1.Items.Add("项2");
这种简单的方式为ComboBox来绑定数据.但有弊端.
主要的原因是,不能直接给ComboBox同时绑定要显示的内容(即Text)和与内容对应的值(即Value).
因为Add方法的参数是一个Object.而不是DropDownList中ListItem.这样就有点麻烦了.
要同时绑定Text和Value给ComboBox,必须使用这个办法,如下:
------
新建一个类,提供Text,Value属性.
public class ComboxItem

public string Text = "";
public string Value = "";
public ComboxItem(string _Text, string _Value)

Text = _Text;
Value = _Value;


public override string ToString()

return Text;



这么使用:
ComboBox1.Items.Add(New Common.ComboxItem("Text1", "Value1"))
ComboBox1.Items.Add(New Common.ComboxItem("Text2", "Value2"))
这样绑定的固定数据就可以同时有内容和内容的值了.
--
当然取值也不能直接取,需要做一下转换.
(ComboxItem)ComboBox1.SelectedItem).Value
------
以上是绑定固定数据,下面是绑定动态数据.
------
相比之下.绑定动态数据就简单多了.和DropDownList使用差不多.
.DisplayMember 属性是显示项.
.Value 属性是值项.
if ((dt != null)) //dt is a DataTable
//此处是向dt中添加其他你想要的值.可以不使用.
System.Data.DataRow drNon = dt.NewRow();
drNon["ItemValue"] = "0";
drNon["ItemText"] = "";
dt.Rows.InsertAt(drNon, 0);

cbl_Ordtyp.DataSource = dt;//绑定数据.
cbl_Ordtyp.DisplayMember = "ITEMTEXT";//显示项
cbl_Ordtyp.ValueMember = "ITEMVALUE";//值项

--
取值:
(System.Data.DataRowView)item["ITEMVALUE"] //根据需要,一般转换成string类型使用
------

差不多ComboBox的操作就这些了.我觉得够详细了吧.你琢磨琢磨.本回答被提问者采纳

以上是关于c# combbox 怎么用的主要内容,如果未能解决你的问题,请参考以下文章

基于ASP.NET MVC 下的Extjs的Combbox加载速率问题,终于解决啦:)

WINFORM选择combox的当前行

JavaScript [ExtJS]自动调整Ext.form.CombBox的大小以适应其内容

C# 如何在一个Datagridview 的 某一个cell里面 绑定一个自定义的combobox

C# winform datagridView中的下拉框如何能实现可以手录或,通过模糊查询直接定位到想要的数据

使用ListView控件展示数据