winform にリストボックスがあり、リストボックス内の項目が選択されると、同じフォーム内のテキストボックスに値が配置されます。リストボックスには多くの項目があり、選択するとテキストボックスを空にして新しい値を渡すことができます。ユーザーが最初に選択したアイテム以外の何かをクリックしたかどうかを確認するにはどうすればよいですか? 以下のように、現在選択されているアイテムを取得します。
var selectedItem = (ReportItems)listbox.selectedItem
SelectedIndexChanged
でイベントを使用できますListBox
。このイベントのイベント ハンドラーを作成して、 で選択したインデックスがいつListBox
変更されたかを判断できます。これは、ListBox での現在の選択に基づいて、他のコントロールに情報を表示する必要がある場合に役立ちます。このイベントのイベント ハンドラーを使用して、他のコントロールに情報を読み込むことができます。
MSDN のドキュメントを参照してください:リンク
私の解決策は、常に最初にテキストボックスをクリアすることでした。したがって、ユーザーがリストビューで項目を選択するとすぐに、テキストボックスにすぐに入力するのではなく、入力する前にテキストボックスをクリアします。
クリアテキスト(); リストボックス項目がクリックされるとすぐに呼び出されます。
public void clearText()
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
textBox7.Clear();
textBox8.Clear();
textBox9.Clear();
textBox10.Clear();
textBox11.Clear();
textBox12.Clear();
}
ReportItems のグローバル変数を追加して、それを「selItem」と呼ぶことができます。
ユーザーが選択したアイテムを変更した後、「新しい」selectedItemを「selItem」変数でチェックします.リストボックスには、選択が前のものから変更されたかどうかを確認できるメソッドがあるとは思いません..
SelectionChanged
のイベントを利用していない理由があるかどうかはわかりませんListBox
が、そうでない場合は利用する必要があります。private
さらに、最初に選択した項目をフォームの変数に保存し、メソッド ハンドラーが起動するたびに比較できるため、最初に選択した項目と異なるかどうかを判断するのは非常に簡単ですSelectionChanged
。
これ以外に、私が提案できることはあまりありません。なぜなら、あなたの質問は非常に明確ではなく、調べるコードがないからです。