首页 新闻 会员 周边

winform下拉选单如何添加“请选择”选项

0
悬赏园豆:10 [已关闭问题]

winform中的下拉选单,已绑定数据表中的资料,但是加载后会选中第一个选项,不知道如何让它显示“请选择”,如果添加则会报
“Items collection cannot be modified when the DataSource property is set.”

请教高手,有什么办法可以添加“请选择”到第一项吗?

hovering的主页 hovering | 初学一级 | 园豆:38
提问于:2009-10-05 21:15
< >
分享
其他回答(2)
0

你可以试试,不过最好再获取DataSource的时候,加个参数ListItem,如果传入为null,则表示不添加"请选择"

cboxCustomer.DataSource = GetCustomerData();
cboxCustomer.DisplayMember
= "Customer_Name";
cboxCustomer.ValueMember
= "Customer_ID";
cboxCustomer.Items.Insert(
0,"请选择");

邀月 | 园豆:25475 (高人七级) | 2009-10-06 01:40
你说的ListItem应该是webform中有吧,winform中没有啊,这种插入的方法已经试过,也是不可以的,报同样的错误“Items collection cannot be modified when the DataSource property is set.”
支持(0) 反对(0) hovering | 园豆:38 (初学一级) | 2009-10-06 09:22
0

给你提供一个思路:

使用泛型集合List作为ComboBox的数据源,然后修改该List即可。

public class Employees
{
public int ID { get; set; }
public string Name { get; set; }
}

//在Form_Load事件中添加
List<Employees> em = new List<Employees>();
//数据示例,实际操作时可将DataSet转为List
em.Add(new Employees() { ID = 1, Name = "张三1" });
em.Add(
new Employees() { ID = 2, Name = "张三2" });
em.Add(
new Employees() { ID = 3, Name = "张三3" });
//首项添加
em.Insert(0, new Employees { ID = 0, Name = "请选择" });
comboBox1.DataSource
= em;
comboBox1.DisplayMember
= "Name";
comboBox1.ValueMember
= "ID";

 


有关DataSet转List请参看以下链接:

http://www.zxbc.cn/html/20080805/64117.html

Kinglee | 园豆:3158 (老鸟四级) | 2009-10-06 09:48
这种方式不可以啊,如果在绑定之前插入一个项,则绑定之后“请选择”那一项就没了。我目前的资料是读的DB this.cboKinds.Items.Insert(0, "请选择"); this.cboKinds.DataSource = ds.Tables[0]; this.cboKinds.ValueMember = "KindID"; this.cboKinds.DisplayMember = "MainName"; 并且之前有实验过,如果不是绑定数据的,而是写好几个固定的选项,则初始加载不会选中任何一个项
支持(0) 反对(0) hovering | 园豆:38 (初学一级) | 2009-10-06 10:53
@hovering:所以我的意思是使用泛型List作为数据源,而不是向你所说的直接绑定,那样做当然是不行的。
支持(0) 反对(0) Kinglee | 园豆:3158 (老鸟四级) | 2009-10-06 11:03
0

  this.comboBox1.SelectedIndex = -1; 谁都不选。

选择的项为空

邢少 | 园豆:10926 (专家六级) | 2009-10-19 14:18
然后重载下DrawItem(可能是),在SelectedIndex = -1的情况下,编辑框显示"请选择..."
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2009-10-19 15:04
@Galactica: 如果你就是想显示“请选择”就在你的数据源中增加一行“请选择”的数据吧。 至于重载DrawItem(),也可以。封装成控件,以后需要显示“请选择”就托这个控件,不用再每个实例再写DrawItem了。
支持(0) 反对(0) 邢少 | 园豆:10926 (专家六级) | 2009-10-19 15:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册