私の質問はこれに似ています:ListBox.SelectedIndexChangedイベントを防ぐ方法は?、しかし私はそれを別の方法で聞きたいです。
'SelectedIndexChanged'がコード(ListBox.SelectedIndex = xなど)を介して開始されたのではなく、ユーザーからのものであるかどうかを判断する簡単な方法はありますか?
私の質問はこれに似ています:ListBox.SelectedIndexChangedイベントを防ぐ方法は?、しかし私はそれを別の方法で聞きたいです。
'SelectedIndexChanged'がコード(ListBox.SelectedIndex = xなど)を介して開始されたのではなく、ユーザーからのものであるかどうかを判断する簡単な方法はありますか?
私の知る限り、いいえ、簡単な方法は組み込まれていません。私ができる最善のことは、コードでフラグを変更する直前にフラグを設定し、イベントハンドラーにフラグをリセットさせて返すことです。
呼び出しスタックを調べて、それが自分のコードのどこかで発生しているかどうかを確認できると思いますが、どれだけ努力する価値があるかはわかりません。
私にとっては、「SelectionChangeCommitted」イベントの方が私の目的に適していました。ドロップダウンの選択が選択されたときに起動します。これは、エンドユーザーが変更を開始したときに特定のケースを処理する最も簡単な方法です。SelectedIndexChangedは、すべてのケースをキャプチャするためのものです。
プロパティ変更リスナーは、プロパティ変更の原因を区別しません。これは一般的な問題です。フラグを設定することはそれを行う方法です。
プロパティ変更イベントを発生させずに値を設定する方法があればいいのにと思います。しかし、プロパティを使用せずにフィールドを直接変更できるため、オブジェクト指向モデル全体が壊れると人々は主張します。