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;运行正常了。

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

第1个回答  2011-03-17
comboBox 的值不一定要在下拉列表中的。直接设置值就好了。
比如 要默认选中的人的ID是 aabbccd;
this.comboBox1.SelectedText = "aabbccdd";
我已经帮你测试过了。追问

答否所问。

追答

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

追问

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

第2个回答  推荐于2016-09-04

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

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";不行
}

本回答被提问者采纳
第3个回答  2011-03-17
关注
第4个回答  2011-03-17
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 赋值
comboBox 的值不一定要在下拉列表中的。直接设置值就好了。比如 要默认选中的人的ID是 aabbccd;this.comboBox1.SelectedText = "aabbccdd";我已经帮你测试过了。

C#winform 编程下ComboBox 怎么给他绑定三个值
写法:((DataRowView)ComboBox.SelectedItem)["Desc"],取到的值即为对应的Desc值。

C# winform 编程下ComboBox 怎么给他绑定三个值?
写法:((DataRowView)ComboBox.SelectedItem)["Desc"],取到的值即为对应的Desc值。

C# winform 下拉列表控件(comboBox)
comboBox2.Text="123".这样当你选择ComboBox1的值的时候ComboBox2的text会跟着改变,如果你想改变ComboBox里面的元素的话就这么写:comboBox2.Items.clear();comboBox2.Items.Add(newone);类似这样就可以了

c# winform combobox 怎么根据相应的值 获取到对应的SelectIndex_百度知 ...
1、新建winform项目用于测试comboBox。2、新建完成的项目结构。3、在Form1窗体中添加一个comboBox,编译,运行效果如下。4、点击comboBox,右键选择属性,找到【items】项,在弹出的【字符串集合编辑器】中输入模拟项1到10。5、加入模拟值后的运行效果如下,下拉显示了所有的10个项,没有滚动条。6、再次...

c#winform如何讲combobox控件里的数据写入数据库?
在C# WinForm中,将ComboBox控件中的数据写入数据库可以通过多种方法实现,本文将介绍两种常用的方法,以供参考。对于前台XML,如果使用Calibrun.Micro WPF框架,可以实现自动绑定,这为开发者节省了大量的时间和精力。在后台CS代码中,可以利用集合的扩展方法来绑定枚举量,这种方法具有很好的通用性,封装好...

ComboBox 如何动态赋值 C#
1、新建一个很简单:ComboBox comboBox1=new ComboBox();2、添加选项【数据库数据源】:比如从数据库中绑定到combobox1的数据源,其中ds是从数据库中查询得到的数据集,ds.Tables[0]是数据集中的数据表0 DataRow dr = ds.Tables[0].NewRow();dr[0] = DBNull.Value;dr[1] = DBNull....

C#combox下拉框赋值
当你把combox.Properties.Items.Add(table.Rows[i].ItemArray[0] + "-" + table.Rows[i].ItemArray[1]);这样的代码写完后,在在后面加上一句应该就可以了,this.comboBox.SelectedIndex = 0;这句话就表示默认选中的是第一项。如果你想默认选中第几项就把0改成那个 ,注意:如果想默认显示第...

C#combobox控件赋值,急!
...这个问题属 下拉列表赋值问题,可分为静态赋值和动态赋值...e.g:private void comboBox1_SelectedIndexChanged(object sender, EventArgs e){listView1.Items.Clear();清以前的内容.int i = 0;SqlConnection conn = new SqlConnection("server=.;database=HotelManage;uid=sa");SqlCommand cmd =...

C# winform :ComboBox动态的添加Tag和Text,如何添加向控件中添加数据...
也不一定要直接绑定以实现这个功能,折中一点的方法就是根据已经绑定的value获取你想要的值。只不过这样会增加连接数据库的次数。

相似回答