c# combox 显示一个值,但是对应的另一个值

mmerhous 2009-02-01 02:43:52
刚开始接触c#不是很明白
请问一下,怎么让combobox在下拉框里显示一个值,但是它的实际值是另一个值呢?
找了半天还是不明白
...全文
1216 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmerhous 2009-02-18
  • 打赏
  • 举报
回复
谢谢各位的回答,学习了
我自己用了一个比较BT的办法……
我绑定数据库的一列,然后select这个值对应的id列,取这个值就可以了。
DMU_WD 2009-02-02
  • 打赏
  • 举报
回复
分别设置DisplayMember和valueMember属性就行了。1楼的已经给出答案了
特别 2009-02-02
  • 打赏
  • 举报
回复
如果是绑定数据库的,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;
}
}

}
kugou123 2009-02-02
  • 打赏
  • 举报
回复
来晚了。。。
lianhui1122 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mmerhous 的回复:]
谢谢楼上,不显示……
[/Quote]+
1楼的是正确的
ComboBox1.DisplayMember = "显示的值";
ComboBox1.ValueMember = "Id";

麻子Mozart 2009-02-02
  • 打赏
  • 举报
回复
学习了
changmengmeng 2009-02-02
  • 打赏
  • 举报
回复
如果不是用数据源控件,设一下那个Items里的属性,即每一项设置一下,Items的项为处理完毕和正在处理,分别对应着处理完毕和正在处理的Value 的值分别设置1和2
changmengmeng 2009-02-02
  • 打赏
  • 举报
回复
ComboBox.DisplayMember = "DeptName";//显示
ComboBox.ValueMember = "DeptId";//实际
要是不是用数据源控件添加的应该就是这么写,如果是用数据源控件提供数据,设置数据源控件的datafeild属性为显示字段,datavalue吧是值,如果没记错的话,应该差不多是
laoli_coding 2009-02-02
  • 打赏
  • 举报
回复
就是 一楼给的这个就已经点到了
ComboBox.DisplayMember = "DeptName";//显示
ComboBox.ValueMember = "DeptId";//实际

mmerhous 2009-02-02
  • 打赏
  • 举报
回复
字典??不太明白
CsToD 2009-02-01
  • 打赏
  • 举报
回复
1楼已经是正确答案了。
其实即使ListBox不提供这样的属性,这个问题也是可以解决的,比如用字典
Dictionary<string,int>dic;
dic["处理完毕"]=1;
dic["正在处理"]=2;

根据ListBox显示的值,就可以索引到实际的值。
mmerhous 2009-02-01
  • 打赏
  • 举报
回复
比如我要显示:
处理完毕
正在处理
对应的值是:
1
2
像这样的要怎么做呢?
舞台中央的我 2009-02-01
  • 打赏
  • 举报
回复
xuexi
mohugomohu 2009-02-01
  • 打赏
  • 举报
回复

ComboBox.DataSource=DataTable1;
ComboBox.DisplayMember = "id";//显示
ComboBox.ValueMember = "数值";
ComboBox.DataBind();
mmerhous 2009-02-01
  • 打赏
  • 举报
回复
hcj3326526 你好,我是想绑定数据库,一列是id号,一列是“数值”,我想让id显示,但是取的值是“数值”
mmerhous 2009-02-01
  • 打赏
  • 举报
回复
谢谢楼上,不显示……
hcj3326526 2009-02-01
  • 打赏
  • 举报
回复
我并不是很明白你所说的,请您据个例子或者补充一下。
是不是在所操作的数据都是来自于数据库?
Cherishny 2009-02-01
  • 打赏
  • 举报
回复
            
ComboBox.DisplayMember = "DeptName";//显示
ComboBox.ValueMember = "DeptId";//实际

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧