フォーカスがあるときにリストボックスがあり、アイテムを選択すると有効なSelectedIndexが返されます。有効なSelectedIndexがあり、同じフォーラムのTextBoxをクリックすると、SelectedIndexは-1になります。ただし、SelectedIndexが変更されないようにする必要があります。どうすればこれを行うことができますか?
6 に答える
ListBox は、フォーカスに関係なく SelectedIndex を保持します。
ListBoxのSelectedIndexを表示するために1つのListBox、1つのTextBox、および1つのLabelを使用して、空のプロジェクトでテストしました。ListBox の SelectedIndexChanged イベントと TextBox の TextChanged イベントの両方で、ListBox の SelectedIndex で Label を更新しました。
Selected Index が -1 に変わるには、何か他のことが起こっている必要があります。
元のポスターと同じ問題がありました。完全には理解できませんでしたが、リストボックスを監視可能なコレクションにバインドし、コレクションが変更されたときに、選択したアイテムがフォーカスを失ったようです。
選択したインデックスを変数に保存し、選択したインデックスが-1の場合はリセットすることで問題を回避しました(そしてそれを復元することは有効でした)
SelectedIndexChangedイベントを処理し、選択した値を保存して、コントロールがフォーカスを取り戻したときに復元できるようにします。
私のアプリではこれを確認していませんが、LBがフォーカスを失ったときにSelectedIndexプロパティが変更された場合は、最後に選択したインデックスをキャッシュし、コントロールがフォーカスを取り戻したときにリセットすることで、そのケースを自分で処理する必要があります。これは、包含フォームで実行することも、ListBoxから派生したクラスで実行することもできます。
-1になったらすぐに、選択したインデックスを設定してみることもできます。何が起こるかわかりませんが、知りたいと思います。
編集:それをテストしたばかりで、他のポスターのように私もそれを再現することはできません。あなたのLBについて少し違うものでなければなりません
これらのコントロールは別のダイアログにあるのでしょうか、それともタブ付きコンテナーの別のタブでしょうか? これが、フォーカスを変更したときに SelectedIndex が失われると私が考える唯一の方法です。そうでなければ、たとえばボタンをクリックしてアイテムに対してアクションを実行するにはどうすればよいでしょうか? クリックしているボタンにフォーカスが移動すると、選択が失われます...