0

選択したアイテムがnullになったときにフォーム上の他のコントロールをオフにするには、リストボックスで現在選択されているアイテムを追跡する必要があります。SelectedIndexChangedイベントを使用しようとしましたが、選択したアイテムがnullの場合は発生しません。

何かアドバイスをいただけますか?

更新:空のコレクションで新しいデータソース値を設定したため、選択したアイテムがnullになります。それが私の問題の理由かもしれませんか?

説明する必要があります。ListBoxは、データベースからのアイテムのコレクションを表します。ユーザーがアイテムを追加/編集/削除するとき、次のメソッドを呼び出してリストボックスを更新します。

private void RefreshList()
{
     lbParts.DataSource = this.database.Fetch<part>(string.Empty);
}

データベースからすべてのアイテムをフェッチし、それをList<part>コレクションに変換して、ListBoxデータソースとして設定しました。

4

2 に答える 2

1

それは正しくありません。SelectedIndexChangedは、SelectedItemがnullになると発生します。この場合、SelectedIndexは-1になります。

編集:あなたは確かに、データソースを変更したときにSelectedIndexChangedを取得しないということは正しいです。DataSourceを変更する直前にSelectedIndex=-1を明示的に設定することをお勧めします

于 2012-05-15T13:17:56.087 に答える
0

おそらく、DataSourceChangedイベントも処理しますか?リストボックスで使用可能な選択肢が変更された場合、これがフォームの使用可能なコントロールで更新を実行する理由であると思いますか?

于 2012-05-15T22:23:02.773 に答える