c# combox 显示一个值,但是对应的另一个值 刚开始接触c#不是很明白请问一下,怎么让combobox在下拉框里显示一个值,但是它的实际值是另一个值呢?找了半天还是不明白 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ComboBox.DisplayMember = "DeptName";//显示 ComboBox.ValueMember = "DeptId";//实际 hcj3326526 你好,我是想绑定数据库,一列是id号,一列是“数值”,我想让id显示,但是取的值是“数值” ComboBox.DataSource=DataTable1;ComboBox.DisplayMember = "id";//显示ComboBox.ValueMember = "数值";ComboBox.DataBind(); 1楼已经是正确答案了。其实即使ListBox不提供这样的属性,这个问题也是可以解决的,比如用字典Dictionary<string,int>dic;dic["处理完毕"]=1;dic["正在处理"]=2;根据ListBox显示的值,就可以索引到实际的值。 就是 一楼给的这个就已经点到了 ComboBox.DisplayMember = "DeptName";//显示ComboBox.ValueMember = "DeptId";//实际 ComboBox.DisplayMember = "DeptName";//显示 ComboBox.ValueMember = "DeptId";//实际要是不是用数据源控件添加的应该就是这么写,如果是用数据源控件提供数据,设置数据源控件的datafeild属性为显示字段,datavalue吧是值,如果没记错的话,应该差不多是 如果不是用数据源控件,设一下那个Items里的属性,即每一项设置一下,Items的项为处理完毕和正在处理,分别对应着处理完毕和正在处理的Value 的值分别设置1和2 +1楼的是正确的 ComboBox1.DisplayMember = "显示的值"; ComboBox1.ValueMember = "Id"; 如果是绑定数据库的,1楼和5楼的已经够明白了如果不是绑定数据库的,简单的可以定义一个结构,复杂点的定义一个类来承载数据以下示例,在Form1中添加四个Button,一个comboBox和一个listBox1各种属性及名称都取默认值窗体中的代码如下,using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Text.RegularExpressions;using System.Runtime.InteropServices;using System.Net;namespace WindowsFormsApplication1{ public partial class Form2 : Form { public Form2() { InitializeComponent(); } //初始化 comboBox1 的列表 private void button1_Click( object sender, EventArgs e ) { comboBox1.Items.Add( new Simple( "aaa", 0 ) ); comboBox1.Items.Add( new Simple( "bbb", 1 ) ); comboBox1.Items.Add( new Simple( "ccc", 2 ) ); comboBox1.Items.Add( new Simple( "ddd", 3 ) ); comboBox1.Items.Add( new Simple( "eee", 4 ) ); } //初始化 listBox1 的列表 private void button2_Click( object sender, EventArgs e ) { listBox1.Items.Add( new Simple( "aaa", 0 ) ); listBox1.Items.Add( new Simple( "bbb", 1 ) ); listBox1.Items.Add( new Simple( "ccc", 2 ) ); listBox1.Items.Add( new Simple( "ddd", 3 ) ); listBox1.Items.Add( new Simple( "eee", 4 ) ); } //显示 comboBox1 选中项目的内容 private void button3_Click( object sender, EventArgs e ) { if ( comboBox1.SelectedItem == null ) { return; } Simple k = (Simple)comboBox1.SelectedItem; MessageBox.Show( k.name + " " + k.index.ToString() ); } //显示 listBox1 选中项目的内容 private void button4_Click( object sender, EventArgs e ) { if ( listBox1.SelectedItem == null ) { return; } Simple k = (Simple)listBox1.SelectedItem; MessageBox.Show( k.name + " " + k.index.ToString() ); } } /// <summary> /// /// </summary> public struct Simple { public string name; public int index; public Simple( string n, int i ) { name = n; index = i; } //重点是重写 ToString 方法, //由于 listBox 和 comboBox 控件 的项目(Item)都是object, //所以listBox 和 comboBox 控件显示项目内容时, //都是取项目的ToString()的结果 public override string ToString() { //return name; //也可以显示成 return index.ToString() + " " + name; } }} 分别设置DisplayMember和valueMember属性就行了。1楼的已经给出答案了 谢谢各位的回答,学习了我自己用了一个比较BT的办法……我绑定数据库的一列,然后select这个值对应的id列,取这个值就可以了。 C#发邮件,若附件中带.txt文件,则outlook自动移动到垃圾邮件。 (求助)Crystal水晶报表发布问题! ★★请教大家关于提取binary字段中保存的字符串问题……在线等,第一时间结帖,谢谢★★ 求算法! 关于字符串转换的问题 EF POCO作用何在 如何是TextBox支持透明背景? TreeView问题(WEBFORM) B/S结构的报表如何设计实现??? 面向对象的思想是如何运到程序设计中去的 return 返回值问题. 关于combobox的小问题
ComboBox.DisplayMember = "DeptName";//显示
ComboBox.ValueMember = "DeptId";//实际
ComboBox.DataSource=DataTable1;
ComboBox.DisplayMember = "id";//显示
ComboBox.ValueMember = "数值";
ComboBox.DataBind();
其实即使ListBox不提供这样的属性,这个问题也是可以解决的,比如用字典
Dictionary<string,int>dic;
dic["处理完毕"]=1;
dic["正在处理"]=2;根据ListBox显示的值,就可以索引到实际的值。
ComboBox.DisplayMember = "DeptName";//显示
ComboBox.ValueMember = "DeptId";//实际
ComboBox.ValueMember = "DeptId";//实际
要是不是用数据源控件添加的应该就是这么写,如果是用数据源控件提供数据,设置数据源控件的datafeild属性为显示字段,datavalue吧是值,如果没记错的话,应该差不多是
1楼的是正确的
ComboBox1.DisplayMember = "显示的值";
ComboBox1.ValueMember = "Id";
如果不是绑定数据库的,简单的可以定义一个结构,复杂点的定义一个类来承载数据以下示例,在Form1中添加四个Button,一个comboBox和一个listBox1
各种属性及名称都取默认值
窗体中的代码如下,using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using System.Net;namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{ public Form2()
{
InitializeComponent();
} //初始化 comboBox1 的列表
private void button1_Click( object sender, EventArgs e )
{
comboBox1.Items.Add( new Simple( "aaa", 0 ) );
comboBox1.Items.Add( new Simple( "bbb", 1 ) );
comboBox1.Items.Add( new Simple( "ccc", 2 ) );
comboBox1.Items.Add( new Simple( "ddd", 3 ) );
comboBox1.Items.Add( new Simple( "eee", 4 ) );
} //初始化 listBox1 的列表
private void button2_Click( object sender, EventArgs e )
{
listBox1.Items.Add( new Simple( "aaa", 0 ) );
listBox1.Items.Add( new Simple( "bbb", 1 ) );
listBox1.Items.Add( new Simple( "ccc", 2 ) );
listBox1.Items.Add( new Simple( "ddd", 3 ) );
listBox1.Items.Add( new Simple( "eee", 4 ) );
} //显示 comboBox1 选中项目的内容
private void button3_Click( object sender, EventArgs e )
{
if ( comboBox1.SelectedItem == null )
{
return;
} Simple k = (Simple)comboBox1.SelectedItem;
MessageBox.Show( k.name + " " + k.index.ToString() );
} //显示 listBox1 选中项目的内容
private void button4_Click( object sender, EventArgs e )
{
if ( listBox1.SelectedItem == null )
{
return;
} Simple k = (Simple)listBox1.SelectedItem;
MessageBox.Show( k.name + " " + k.index.ToString() );
}
} /// <summary>
///
/// </summary>
public struct Simple
{
public string name;
public int index; public Simple( string n, int i )
{
name = n;
index = i;
} //重点是重写 ToString 方法,
//由于 listBox 和 comboBox 控件 的项目(Item)都是object,
//所以listBox 和 comboBox 控件显示项目内容时,
//都是取项目的ToString()的结果
public override string ToString()
{
//return name; //也可以显示成
return index.ToString() + " " + name;
}
}}
我自己用了一个比较BT的办法……
我绑定数据库的一列,然后select这个值对应的id列,取这个值就可以了。