WinForm中comboBox控件数据绑定实现方法

本文实例讲述了WinForm中comboBox控件数据绑定实现方法。分享给大家供大家参考,具体如下:

下面介绍三种对comboBox绑定的方式,分别是泛型中IList和Dictionary,还有数据集DataTable

 一、IList

现在我们直接创建一个List集合,然后绑定

IList<string> list = new List<string>();
list.Add("111111");
list.Add("222222");
list.Add("333333");
list.Add("444444");
comboBox1.DataSource = list;

执行后,我们会发现绑定成功,但是 我们知道一般对于下拉框的绑定都会有一个值,一个显示的内容,这个时候我们可以创建一个类,把value和text都封装到这个类,作为list的类型

public class Info
{
  public string Id { get; set; }
  public string Name { get; set; }
}
private void bindCbox()
{
  IList<Info> infoList = new List<Info>();
  Info info1 = new Info() { Id="1",Name="张三"};
  Info info2 = new Info() { Id="2",Name="李四"};
  Info info3 = new Info() { Id = "3",Name = "王五" };
  infoList.Add(info1);
  infoList.Add(info2);
  infoList.Add(info3);
  comboBox1.DataSource = infoList;
  comboBox1.ValueMember = "Id";
  comboBox1.DisplayMember = "Name";
}

这个时候我们就可以直接获得值和显示的内容了

二、Dictionary

这个有点特殊,不能直接绑定,需要借助类BindingSource才可以完成绑定

Dictionary<int, string> kvDictonary = new Dictionary<int, string>();
kvDictonary.Add(1, "11111");
kvDictonary.Add(2, "22222");
kvDictonary.Add(3, "333333");
BindingSource bs = new BindingSource();
bs.DataSource = kvDictonary;
comboBox1.DataSource = bs;
comboBox1.ValueMember = "Key";
comboBox1.DisplayMember = "Value";

三、数据集

这个比较常见,很简单

//数据集绑定
private void BindCombox()
{
  DataTable dt = new DataTable();
  DataColumn dc1 = new DataColumn("id");
  DataColumn dc2 = new DataColumn("name");
  dt.Columns.Add(dc1);
  dt.Columns.Add(dc2);
  DataRow dr1 = dt.NewRow();
  dr1["id"] = "1";
  dr1["name"] = "aaaaaa";
  DataRow dr2 = dt.NewRow();
  dr2["id"] = "2";
  dr2["name"] = "bbbbbb";
  dt.Rows.Add(dr1);
  dt.Rows.Add(dr2);
  comboBox1.DataSource = dt;
  comboBox1.ValueMember = "id";
  comboBox1.DisplayMember = "name";
}

注意:

当我们触发combox的SelectedIndexChanged的事件后,我们在加载窗体的时候就会执行,这点我刚开始也和魅惑,导致容易出错,这点我们可以采取一些方法避免执行,比如可以定义一个变量fig=false

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
  if(this.fig)
  {
    string selectValue = this.cmbAddMember.SelectedValue.ToString();
    rtbaddMember.SelectedText = selectValue;
  }
}

那么肯定想在加载窗体后,执行了,所以在加载窗体后我们还要把fig的值设为true

private void SetAutoMessage_Load(object sender, EventArgs e)
{
  loadCombox();
  loadMessageTemplet();
  fig= true;
}

更多关于C#相关内容感兴趣的读者可查看本站专题:《WinForm控件用法总结》、《C#窗体操作技巧汇总》、《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

(0)

相关推荐

  • C#数据导入/导出Excel文件及winForm导出Execl总结

    一.asp.net中导出Execl的方法: 在asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览器.在Response输出时,\t分隔的数据,导出execl时,等价于分列,\n等价于换行. 1.将整个html全部输出execl 此法将html中所有的内容,如按钮,表格,图片等全部输出到Execl中. 复制代码 代码如下: Response.Clear(); Response.Buffer= t

  • .Net中导出数据到Excel(asp.net和winform程序中)

    一.asp.net中导出Excel的方法: 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览器.在Response输出时,t分隔的数据,导出Excel时,等价于分列,n等价于换行. 1.将整个html全部输出Excel 此法将html中所有的内容,如按钮,表格,图片等全部输出到Excel中. 复制代码 代码如下: Response.Clear(); Response.Buffer= tru

  • 绑定winform中DataGrid

    复制代码 代码如下: this.dgTankView.Columns["ID"].DataPropertyName = "ID";            this.dgTankView.Columns["TankName"].DataPropertyName = "Name";            this.dgTankView.Columns["Area"].DataPropertyName = &qu

  • WinForm中窗体间的数据传递交互的一些方法

    实际上过去我也写过类似的主题,这里把各种方法总结一下,内容的确基础了一些,所以这篇文章是写给刚刚学习C#的同行们的,希望对大家有些帮助吧!很抱歉,这篇文章没有诡异的bug来勾起大家的兴趣,但是下篇文章我会努力写些有趣的主题的! 在窗体间传递数据的方法比较多: 1,在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就明白了: 复制代码 代码如下: public class frmMain

  • C#在winform中实现数据增删改查等功能

    winform中利用ado.net实现对单表的增删改查的详细例子,具体如下: 1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等.  2.功能具体介绍: 1.首先,我们要先实现基本的数据操作,增删改查这几个操作. (1)先定义一个数据库操作的公共类: using System; using System.Collections.Generic; using System.Linq; using S

  • Winform实现调用asp.net数据接口实例

    本文实例讲述了Winform实现调用asp.net数据接口的方法,分享给大家供大家参考.具体实现方法如下: 一.问题: 最近一个WPF项目需要改写成android项目,思路是在asp.net项目中编写一个通用接口,便于其它平台下调用数据.刚接触到这些东西的时候完全是一头雾水,最根本的原因是不明白网站中的一个网页,为什么其它项目就可以访问它,并获取数据.带着疑问在asp.net项目编写一个简单的数据接口,并新建一个小winform项目直接访问它. 二.解决方法: 在asp.net项目中编写一个数据

  • WinForm实现为ComboBox绑定数据源并提供下拉提示功能

    本文实例展示了WinForm实现为ComboBox绑定数据源并提供下拉提示功能,这是一个非常有实用价值的功能,具体实现方法如下: 主要功能代码如下: /// <summary> /// 为ComboBox绑定数据源并提供下拉提示 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="combox">ComboBox<

  • winform中的ListBox和ComboBox绑定数据用法实例

    本文实例讲述了winform中的ListBox和ComboBox绑定数据用法.分享给大家供大家参考.具体实现方法如下: 本例实现将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容,代码如下: 复制代码 代码如下: //... //自定义了Person类(有Name,Age,Heigth等属性) List<Person> persons=new List<Person>(); persons.Add(new Person("WuMiao"

  • winform导出dataviewgrid数据为excel的方法

    本文实例讲述了winform导出dataviewgrid数据为excel的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: #region 导出dataViewGrid视图中的数据为xls格式  private void btnExportList_Click(object sender, EventArgs e)  {     string fname = string.Empty; SaveFileDialog sfd = new SaveFileDialog(); sf

  • C#(WinForm) ComboBox和ListBox添加项及设置默认选择项

    Web控件DropDownList和WinForm控件ComboBox机制不一样. ComboBox没有对应的ListItem需要自己写一个: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WinListItem { /// <summary> /// 选择项类,用于ComboBox或者ListBox添加项 /// </summary>

随机推荐