2013-02-03 48 views
0

我正在C#中创建一个Windows窗体应用程序,并且是将它从asp.net窗体应用程序转换而来的。我遇到了差异,我似乎无法得到答案。我已经从数据集中加载了一个组合框,但我希望第一个项目可以说Select ...或类似的东西,而不是仅显示数据集中的第一个项目。在asp.net,我只想说使用DataSet加载组合框并加载默认值

ddSelected.Items.Insert(0, "Select..."); 

但在这里我得到一个错误:当DataSource属性设置项集合不能被修改。

我该如何在Windows窗体的C#中执行此操作?

+0

只需将该项目添加到用作数据源的底层集合。我还必须提到winforms是恐龙技术,如果我是你,我宁愿在WPF或任何其他基于XAML的技术中执行所有新项目。 –

回答

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类没有按” t固有地引发事件以通知集合已经改变的任何绑定控件。

  1. 更新您的基础数据源。
  2. 如有必要,将您的ComboBoxDatasource属性设置为null并返回到您的基础数据源。