0

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

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

但是在这里我得到一个错误:设置 DataSource 属性时无法修改 Items 集合。

如何在 C# 中为 Windows 窗体执行此操作?

4

1 回答 1

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...");

请注意,这将与 a 无缝协作,BindingList因为它实现了IRaiseItemChangedEvents.

如果您的底层证券DataSource是一个诸如 an 之类的对象ArrayList,那么为了“刷新”这些ComboBox项目,您需要执行以下操作:

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

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

  1. 更新您的基础数据源。
  2. 如有必要,通过设置更新您的ComboBox Datasource属性null并返回到您的基础数据源。
于 2013-02-04T00:28:40.717 回答