C#中 combobox 显示数值和实际值怎么绑定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中 combobox 显示数值和实际值怎么绑定相关的知识,希望对你有一定的参考价值。

比如显示 中国对应值CN,即显示给用户看的是 "中国 ",实际值是CN 求代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Collections;

namespace ClientDemo

    public partial class Setting : Office2007Form
    
        private int start;
        private int process;
        private int end;
        private int faceQuality;
        private int faceConfidence;
        private int processIncrement;
        private int endIncrement;
        private int interval;
        private int resolution;

        public Setting()
        
            InitializeComponent();
            /// <summary>
            /// 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA
            /// IPCAM专用3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA(640x480) , 7=XVGA, 8=HD900p 
            /// </summary>
            ArrayList al = new ArrayList();
            al.Add(new TextAndValue("CIF(352*288)", "0"));
            al.Add(new TextAndValue("QCIF(176*144)", "1"));
            al.Add(new TextAndValue("4CIF(704*576)", "2"));
            al.Add(new TextAndValue("UXGA(1600*1200)", "3"));
            al.Add(new TextAndValue("SVGA(800*600)", "4"));
            al.Add(new TextAndValue("HD720P(1280*720)", "5"));
            al.Add(new TextAndValue("VGA(640*480)", "6"));
            al.Add(new TextAndValue("XVGA(1280*960)", "7"));
            al.Add(new TextAndValue("HD900P(1600*912)", "8"));

            cboResolution.DataSource = al;
            cboResolution.DisplayMember = "DisplayText";
            cboResolution.ValueMember = "RealValue";
        

        private void Setting_Load(object sender, EventArgs e)
        
            DBColection.getConfigList();
            foreach (DBColection.TraceConfig tc in DBColection.configList)
            
                if (tc.ParamType == "Start") txtMinStartTraceStart.Text = tc.Start.ToString();
                else if (tc.ParamType == "Process")
                
                    txtMinStartTraceProcess.Text = tc.Start.ToString();
                    nudProcessIncrement.Value = (decimal)tc.Step;
                
                else if (tc.ParamType == "End")
                
                    txtMinStartTraceEnd.Text = tc.Start.ToString();
                    nudEndIncrement.Value = (decimal)tc.Step;
                
                else if (tc.ParamType == "FaceQuality") txtFaceQuality.Text = tc.Start.ToString();
                else if (tc.ParamType == "FaceConfidence") txtFaceConfidence.Text = tc.Start.ToString();
                else if (tc.ParamType == "Interval") txtInterval.Text = tc.Start.ToString();
                else if (tc.ParamType == "Resolution")
                    cboResolution.SelectedValue = tc.Start.ToString();
            
        

        private void btncancel_Click(object sender, EventArgs e)
        
            this.Close();
        

        private void btnok_Click(object sender, EventArgs e)
        
            start = Convert.ToInt32(txtMinStartTraceStart.Text.Trim().ToString());
            process = Convert.ToInt32(txtMinStartTraceProcess.Text.Trim().ToString());
            end = Convert.ToInt32(txtMinStartTraceEnd.Text.Trim().ToString());
            faceQuality = Convert.ToInt32(txtFaceQuality.Text.Trim().ToString());
            faceConfidence = Convert.ToInt32(txtFaceConfidence.Text.Trim().ToString());
            processIncrement = Convert.ToInt32(nudProcessIncrement.Value.ToString());
            endIncrement = Convert.ToInt32(nudEndIncrement.Value.ToString());
            interval = Convert.ToInt32(txtInterval.Text.Trim().ToString());
            resolution = Convert.ToInt16(cboResolution.SelectedValue.ToString());
            DBColection.updateConfigList(start, process, end, faceQuality, faceConfidence, processIncrement, endIncrement, interval, resolution);
        

        private void cboResolution_SelectedIndexChanged(object sender, EventArgs e)
        
            resolution = Convert.ToInt16(cboResolution.SelectedValue.ToString());
        

    
    class TextAndValue
    
        private string _RealValue = "";
        private string _DisplayText = "";

        public string DisplayText
        
            get
            
                return _DisplayText;
            
        

        public string RealValue
        
            get
            
                return _RealValue;
            
        

        public TextAndValue(string ShowText, string RealVal)
        
            _DisplayText = ShowText;
            _RealValue = RealVal;
        

        public override string ToString()
        
            return _RealValue.ToString();
        

    

参考技术A 使用绑定数据集,如你要绑定的数据集为dv对象(DataView),其中包含ID和Name两列数据,分别为实际值和显示文本。combobox的对象名为cmb,实现代码如下:
cmb.DataSource=dv;
cmb.DisplayMember="Name";
cmb.ValueMember="ID";
cmb.DataBind();本回答被提问者采纳
参考技术B

您好,很高兴为您解答!

思路如1,代码如2所示:

    使用绑定数据集,如你要绑定的数据集为dv对象(DataView),其中包含ID和Name两列数据,分别为实际值和显示文本。

    combobox的对象名为cmb,实现代码如下:
    cmb.DataSource=dv;
    cmb.DisplayMember="Name";
    cmb.ValueMember="ID";
    cmb.DataBind();

参考技术C this.comboBox1.DisplayMember = "显示出来那个字段";
this.comboBox1.ValueMember = "这个是对应那个value值,通常也就是id值";
this.comboBox1.DataSource=数据源;
接下来绑定数据
参考技术D 你就写个结构体
struct Combo

string Show;
string Hide;

然后定义个此类型的数组,把你所有的配对都存进去。

以上是关于C#中 combobox 显示数值和实际值怎么绑定的主要内容,如果未能解决你的问题,请参考以下文章

c# combobox绑定数据源后默认显示第一个值

C# winform 编程下ComboBox 怎么给他绑定三个值?

C# winfrom comboBox

c#怎么用comboBox绑定treeview控件

ComboBox 如何动态赋值 C#

C#如何设置combobox下拉框的内容