0

選択した項目を ComboBox コレクションから削除しようとして
います: buttonClick を作成しました:

cb01.Items.Remove(cb01.SelectedItem);.

これによりアイテムが削除されますが、次にフォームを開くと、アイテムが再び表示されます。助けてください。

4

3 に答える 3

2

KeyDownComboBox のイベントを追加してから

private void cb01_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
      if(cb01.SelectedIndex != -1)
         cb01.Items.Remove(cb01.SelectedItem);
    }
}

上記はコンボボックスからアイテムを削除しますが、アプリケーションを再度ロードするときに設計時にアイテムを追加すると、すべてのアイテムが再び表示されます。

あなたの方法を確認してくださいInitializeComponent()。以下のようなものを見ることができます。

 this.cb01.Items.AddRange(new object[] {
            "item1",
            "item2",
            "item13"});

アプリケーションを再度ロードするとInitializeComponent、上記のメソッドが呼び出され、アイテムが追加されます。

この問題を回避するには。バインドされたデータ ソースを使用できます。たとえば、データベースからアイテムを取得できます。削除すると、データベースから削除できます。次にアプリケーションをロードすると、データベース内のアイテムのみが表示されます。

于 2012-06-28T07:47:22.383 に答える
1

コンボボックスの名前に置き換えcomboBox1て、そのKeyDownイベントをバインドします

void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
    int currentItem = comboBox1.SelectedIndex;
    if (e.KeyCode == Keys.Delete && currentItem != -1)
    {
        comboBox1.Items.RemoveAt(currentItem);

        if (comboBox1.Items.Count > 0) 
            comboBox1.SelectedIndex = (currentItem > 0 ? currentItem - 1 : currentItem);
    }
}

これは、削除後にリスト内の次の項目を選択するか、comboBox に項目がないか項目が選択されていない場合は何もしません。

于 2012-06-28T07:53:06.310 に答える
1

どうですか

if(cb01.SelectedItem != null)
    cb01.Items.Remove(cb01.SelectedItem);

なぜ私はチェックしたのですか?

最後の行であなたが言ったので

cb01.Items.RemoveAt(cb01.SelectedIndex); // error: Value of '-1' is not valid...

-1 はアイテムが選択されていないときのコンボのインデックスです。だから私は最初に選択したアイテムをチェックしました。見つかった場合は if ステートメントに入ります。

于 2012-06-28T07:43:16.863 に答える