この投稿を見るとここ。
ただし、私のコードではDataBind()
メソッドが表示されません。
lstBox.DataBind();
listbox
C#.Netでリロードするには?
Refresh()
メソッドも機能しませんでした。
ObservableCollectionを ItemSource として使用すると、すべてが自動的に行われます。あなたのタスクは、項目を ObservableCollection に入力することです。手動で更新する必要はありません。
DataBind()はASP.NETコントロール用です-私が知る限り、Windowsフォームコントロールに相当するメソッドはありません。リストボックスのデータソースは何ですか?しばらく前に同様の問題が発生したことを覚えています。使用していたものではなく、コントロールをBindingSourceオブジェクトにバインドすることで問題を解決しました。同様に、リストボックスを現在のデータソースではなくBindingSourceにバインドすると便利な場合があります。MSDNから:
BindingSourceコンポーネントは、多くの目的に役立ちます。まず、Windowsフォームコントロールとデータソース間で通貨管理、変更通知、およびその他のサービスを提供することにより、フォームのデータへのバインドコントロールを簡素化します。
つまり、BindingSourceに変更を加えると(BindingSource.Addを呼び出す、BindingSourceのDataSourceプロパティを別のコレクションに設定するなど)、ListBoxは「DataBind()」のようなメソッドを呼び出す必要なしに自動的に更新されます。 。
リストボックスが現在コレクションオブジェクトにバインドされている場合は、代わりにコレクションをBindingSourceにバインドしてから、コントロールをBindingSourceにバインドできます。
BindingSource.DataSource = ListboxItems;
ListBox.DataSource = BindingSource;
または、BindingSourceのコンテンツを手動で作成することもできます。
MyBindingSource.Clear();
MyBindingSource.Add(new BusinessObject("Bill", "Clinton", 1946));
MyBindingSource.Add(new BusinessObject("George", "Bush", 1946));
MyBindingSource.Add(new BusinessObject("Barack", "Obama", 1961));
lstBox.DataSource = MyBindingSource;