0

私は C# で Windows フォーム アプリケーションを作成しており、それを asp.net フォーム アプリケーションから翻訳しています。私は答えが得られないように見える違いに直面しています。データセットのアイテムを含むコンボボックスをロードしましたが、データセットの最初のアイテムを表示するだけでなく、最初のアイテムに Select... などと表示させたいです。asp.netでは、私はただ言うでしょう

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

しかし、ここでエラーが発生します: DataSource プロパティが設定されている場合、アイテム コレクションを変更できません。

C# for Windows Forms でこれを行うにはどうすればよいですか?

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

BindingListを実装しているため、これは a とシームレスに機能することに注意してくださいIRaiseItemChangedEvents

基礎DataSourceとなるオブジェクトが などのオブジェクトである場合、アイテムArrayListを「更新」するには、次のComboBoxようにする必要があります。

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

これはArrayList、コレクションが変更されたことをバインドされたコントロールに通知するイベントをクラスが本質的に発生させないためです。

  1. 基になるデータソースを更新します。
  2. 必要に応じComboBox Datasourceて、プロパティを設定して更新nullし、基になるデータソースに戻します。
于 2013-02-04T00:28:40.717 に答える