C# WinForm Combobox 赋值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WinForm Combobox 赋值相关的知识,希望对你有一定的参考价值。

combobox1.DataSource = Bll.Person.GetList("");//绑定的model实体对象
combobox1.DisplayMember = "Name";
combobox1.ValueMember = "Id";
界面上绑定完成后,现在有另一个人的id,要默认选中。不知道怎么样实现。
1、combobox没有.value属性。使用combobox1.value="123"的方法不要来。
2、使用遍历的方法不要来。
foreach (object o in combobox1.Items)

Model.Person s = o as Model.Person;
string id = s.id.ToString();
if (id=="123")

MessageBox.Show(s.name);//这个是成功的,但不想用遍历。难道非得用这样?
combobox1.SelectedItem=o;
break;



都说细节决定成败啊,纠结了这么久的一个问题终于搞定了。问题在引号。id是整型的。
SelectedValue="123";当然是找不到这项的。
但是
SelectedValue=123;运行正常了。

经过我的失败教训,
希望大家编程的同仁们不要再犯同样的错了哈

参考技术A comboBox 的值不一定要在下拉列表中的。直接设置值就好了。
比如 要默认选中的人的ID是 aabbccd;
this.comboBox1.SelectedText = "aabbccdd";
我已经帮你测试过了。追问

答否所问。

追答

就不能变换一下嘛?
this.comboBox1.SelectedText = this.comboBox1.Items[this.comboBox1.Items.IndexOf("123")].ToString();

追问

兄弟辛苦了,虽然你绕了一圈。但还是在原点。indexOf()的参数的绑定上去的对象才可能,"123"是没法使用的。

参考技术B

如图所示,假设有一个类为:

public class Info

    

        public string Id  get; set; 

        public string Name  get; set; 

    

那么在Form_load事件中加载数据:

private void Form1_Load(object sender, EventArgs e)

        

            List<Info> InfoList = new List<Info>();

            Info i = new Info();

            i = new Info()  Id = "0", Name = "(全部)" ;

            InfoList.Add(i);

            i = new Info();

            i.Id = "1";

            i.Name = "aa";

            InfoList.Add(i);

            i = new Info()  Id = "2", Name = "bb" ;

            InfoList.Add(i);

            i = new Info()  Id = "3", Name = "cc" ;

            InfoList.Add(i);

            this.comboBox1.DataSource = InfoList;

            this.comboBox1.DisplayMember = "Name";

            this.comboBox1.ValueMember = "Id";

        

在文本框中输入ID后,点击确定按钮

 private void button1_Click(object sender, EventArgs e)

        

            if (this.textBox1.Text.Trim() != String.Empty)

            

                this.comboBox1.SelectedValue = this.textBox1.Text.Trim();

            

        

这样,你想谁的ID选中都形

用我做的这个小例子,如果你想在刚开始就选中想要选中的数据,就可以这样写:

在load事件中,先通过查询语句,得到a的Id,然后加上

this.combox1.SelectedValue = "2";

就行了

追问

我刚开始也是像兄弟这样做的,但SelectedValue 永远为null,无法赋值,不知道问题出在哪里。

追答

能否给你刚开始的代码我看看,不然很难想的得出来的
如果是在页面加载事件中写的话,必须先要给comobox的DataSource赋值,然后才能SelectedValue,更准确的说,在所有情况下,comobox的DataSource必须先赋值,然后才能操作,如果先SelectedValue后赋值,就是NULL

追问

private void Form1_Load(object sender, EventArgs e)

combobox1.DataSource = Bll.Person.GetList("");//绑定的model实体对象
combobox1.DisplayMember = "Name";
combobox1.ValueMember = "Id";

private void Query_Click(object sender, EventArgs e)

//combobox1.SelectedText="123";不行
//combobox1.SelectedValue="123";不行
//combobox1.SelectedItem="123";不行

本回答被提问者采纳
参考技术C 关注 参考技术D combox.insert("123");追问

你是高手。混分也不要这样混啊。问题都不看清。

追答

combox.selectitem.text=" id";你不就是绑定后要再加个默认值么。有酷似默认值不显示,只有个默认的id,combox.selectvalue=" id";你再试试,winform和web有点不一样,

第5个回答  2011-03-17 使用SelectedItem属性追问

SelectedItem 只是model对象object类型。SelectedItem=“123”是不行的。

以上是关于C# WinForm Combobox 赋值的主要内容,如果未能解决你的问题,请参考以下文章

C# winfrom comboBox

C# winform 下拉列表控件(comboBox)

C# Winform的comboBox控件下拉框怎样做一个多选?请大神指教!麻烦您给出相应代码!

C#中ComboBox动态绑定赋值

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

c#(winform)combobox手动添加的选项怎么获取value?