C#WinForm开发之在ComboBox、ListBox中加载键值对
2010-07-07 16:54
387 查看
经常,我们会有这样的需要:
给ComboBox或者ListBox添加项时,我们希望同时添加值和名字。
但是,C#本身并没有提供这种机制,但是ComboBox和ListBox都具有DisplayMember和 ValueMember属性。因此,需要我们自己根据C#本身提供的一下接口,来实现这个功能需求。
通过查资料,整理出一个解决方案:
定义一个键值对类型,其实例作为ComboBox和ListBox的一个Item;
具体实现如下(以ComboBox为例进行说明):
1、添加选项类:
/// <summary>
/// 选择项类,用于ComboBox或者ListBox添加项
/// </summary>
public class ListItem
{
private string id = string.Empty;
private string name = string.Empty;
public ListItem(string sid, string sname)
{
id = sid;
name = sname;
}
public override string ToString()
{
return this.name;
}
/*combobox的 Item.ADD(一个任意类型的变量),而显示的时候调用的是这个变量的ToString()方法,如果这个类没有重载ToString(),那么显示的结果就是命名空间 + 类名*/
public string ID
{
get
{
return this.id;
}
set
{
this.id = value;
}
}
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
}
2、为ComboBox添加项:
ListItem item = new ListItem("id:key", "name:value");
cbb.Items.Add(item);
cbb.DisplayMember = "Name";
cbb.ValueMember = "ID";
3、使用ComboBox当前项:
ListItem item = (ListItem)cbb.SelectedItem;
string sId=item.ID.ToString().Trim();
string sName=item.Name.ToString().Trim();
4、获取已知项在ComboBox中的索引
ListItem item = new ListItem("id:key", "name:value");
cbb.SelectedIndex = cbb.FindString(item.Name.ToString().Trim());
特别说明:本文重点参考http://blog.csdn.net/fcsh820/archive/2009/02/07/3867053.aspx
给ComboBox或者ListBox添加项时,我们希望同时添加值和名字。
但是,C#本身并没有提供这种机制,但是ComboBox和ListBox都具有DisplayMember和 ValueMember属性。因此,需要我们自己根据C#本身提供的一下接口,来实现这个功能需求。
通过查资料,整理出一个解决方案:
定义一个键值对类型,其实例作为ComboBox和ListBox的一个Item;
具体实现如下(以ComboBox为例进行说明):
1、添加选项类:
/// <summary>
/// 选择项类,用于ComboBox或者ListBox添加项
/// </summary>
public class ListItem
{
private string id = string.Empty;
private string name = string.Empty;
public ListItem(string sid, string sname)
{
id = sid;
name = sname;
}
public override string ToString()
{
return this.name;
}
/*combobox的 Item.ADD(一个任意类型的变量),而显示的时候调用的是这个变量的ToString()方法,如果这个类没有重载ToString(),那么显示的结果就是命名空间 + 类名*/
public string ID
{
get
{
return this.id;
}
set
{
this.id = value;
}
}
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
}
2、为ComboBox添加项:
ListItem item = new ListItem("id:key", "name:value");
cbb.Items.Add(item);
cbb.DisplayMember = "Name";
cbb.ValueMember = "ID";
3、使用ComboBox当前项:
ListItem item = (ListItem)cbb.SelectedItem;
string sId=item.ID.ToString().Trim();
string sName=item.Name.ToString().Trim();
4、获取已知项在ComboBox中的索引
ListItem item = new ListItem("id:key", "name:value");
cbb.SelectedIndex = cbb.FindString(item.Name.ToString().Trim());
特别说明:本文重点参考http://blog.csdn.net/fcsh820/archive/2009/02/07/3867053.aspx
相关文章推荐
- Windows Phone 7(WP7)开发 ListBox的分页加载
- WPF开发中遇到的问题及解决系列(二):如何获取通过binding生成的ComboBox或者ListBox等的Item
- c#(winform)中ComboBox和ListBox添加项 键值对 形式
- mvc3 + easyui 开发学习笔记------- easyui combobox 加载列表项
- 新时尚Windows8开发(22):ListBox与ComboBox
- C#Winform开发经验之Combox键值对
- 新时尚Windows8开发:ListBox与ComboBox
- Winform开发常用控件之ComboBox、ListBox
- Android开发技巧——TextView加载HTML的图片及代码显示问题
- Android UI开发第三十六篇——使用Volley加载图片列表
- Android开发之基础----------多媒体图片加载、拍照和摄像(一)
- react结合redux和react-router开发大型应用实现按需加载(code splitting)
- IOS开发网络加载图片缓存策略之──ASIDownloadCache缓存策略
- Android官方开发文档Training系列课程中文版:数据存储之键值对序列存储
- 008_跨平台开发_MUI_按钮之加载中按钮(button)
- Linux2.6下开发简单的可加载内核模块
- Revit二次开发之“加载A项目中的族到B项目中”
- iOS开发中使用[[UIApplication sharedApplication] openURL:] 加载其它应用
- Android程序开发之异步加载机制 之 Handler 笔记
- Android插件化开发 第一篇 [动态加载apk]