使用DataSet加载Combobox并加载默认值

时间:2013-02-03 22:09:06

标签: c# winforms

我正在用C#创建一个Windows窗体应用程序,并且它正在从asp.net表单应用程序中进行翻译。我遇到了一个差异,我似乎无法得到答案。我已经加载了一个带有来自数据集的项目的组合框,但我希望第一项说Select ...或类似的东西,而不是只显示数据集中的第一项。在asp.net中,我只想说

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

但是我收到一个错误:设置DataSource属性时无法修改项目集合。

如何在C#for Windows Forms中执行此操作?

1 个答案:

答案 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

如果您的基础DataSourceArrayList之类的对象,那么为了“刷新”ComboBox项,您需要执行以下操作:

    comboBox1.DataSource = null;
    comboBox1.DataSource = myList;

这是因为ArrayList类本身并不会引发事件来通知任何绑定控件集合已更改。

  1. 更新基础数据源。
  2. 如有必要,通过将ComboBox Datasource设置为null并返回基础数据源来更新。{/ li>