我正在用C#创建一个Windows窗体应用程序,并且它正在从asp.net表单应用程序中进行翻译。我遇到了一个差异,我似乎无法得到答案。我已经加载了一个带有来自数据集的项目的组合框,但我希望第一项说Select ...或类似的东西,而不是只显示数据集中的第一项。在asp.net中,我只想说
ddSelected.Items.Insert(0, "Select...");
但是我收到一个错误:设置DataSource属性时无法修改项目集合。
如何在C#for Windows Forms中执行此操作?
答案 0 :(得分:1)
此解决方案可能会指向正确的方向,但这完全取决于您的DataSource
对象类型究竟是什么。
想象一下这样的场景:
BindingList<string> myList = new BindingList<string>();
myList.Add("Mark");
myList.Add("Joe");
myList.Add("Kelly");
myList.Add("Susan");
comboBox1.DataSource = myList;
您需要做的就是更新myList,ComboBox
项目将更新:
myList.Insert(0, "Select...");
请注意,这将与BindingList
无缝协作,因为它实现了IRaiseItemChangedEvents
。
如果您的基础DataSource
是ArrayList
之类的对象,那么为了“刷新”ComboBox
项,您需要执行以下操作:
comboBox1.DataSource = null;
comboBox1.DataSource = myList;
这是因为ArrayList
类本身并不会引发事件来通知任何绑定控件集合已更改。
ComboBox
Datasource
设置为null
并返回基础数据源来更新。{/ li>
醇>