UIにいくつかのコンボボックスがあり、それぞれに類似したエントリ(番号)の長いリストがあります。ユーザーがコンボボックスの1つからアイテムを選択すると、ユーザーが他のコンボボックスから同様の値(ただし同じではない可能性が高い)のエントリを選択することを私は知っています。したがって、ユーザーが値を選択した後、ユーザーに多くのスクロールを強制しないようにするために、次のコンボボックスのドロップダウンを最後に選択した値の近くに「事前スクロール」したいと思います(このドロップダウンがない場合)すでに選択があります)。
私はこれまでに使用してこれを達成しました
combobox.SelectedItem = myLastSelectedItem;
combobox.DropDownイベントハンドラー内。
次に、ドロップダウンが閉じたときに、ユーザーがドロップダウンからアイテムをクリックしたかどうかを検出できるようにする必要があります。ユーザーがアイテムをクリックしなかった場合は、選択した値を以前の値にリセットする必要があります(何もありません)。ユーザーがmyLastSelectedItemまたは別のアイテムをクリックした可能性があります(したがって、ユーザーがクリックした場合でも同じである可能性があるため、現在選択されているアイテムをmyLastSelectedItemと比較することはできません)。SelectedValueChange、SelectedIndexChange、TextChangedはすべて、DropDownClosedイベントの後に発生するため、使用できません。MouseClickイベントはまったく発生しません。
したがって、ユーザーがコンボボックスドロップダウン内のアイテムをクリックしたことを検出するにはどうすればよいですか(ユーザーがアイテムの外側をクリックしたか、エスケープを押したためにドロップダウンが閉じたのではありません)。