C# WinForm Combobox 赋值
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;运行正常了。
经过我的失败教训,
希望大家编程的同仁们不要再犯同样的错了哈 展开
比如 要默认选中的人的ID是 aabbccd;
this.comboBox1.SelectedText = "aabbccdd";
我已经帮你测试过了。
答否所问。
就不能变换一下嘛?
this.comboBox1.SelectedText = this.comboBox1.Items[this.comboBox1.Items.IndexOf("123")].ToString();
如图所示,假设有一个类为:
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
你是高手。混分也不要这样混啊。问题都不看清。
combox.selectitem.text=" id";你不就是绑定后要再加个默认值么。有酷似默认值不显示,只有个默认的id,combox.selectvalue=" id";你再试试,winform和web有点不一样,
SelectedItem 只是model对象object类型。SelectedItem=“123”是不行的。