質問

私の質問はこれに似ています: ListBox.SelectedIndExexChangedイベントを防止する方法は?, 、しかし、私はそれを別の方法で尋ねたいです。

「selectedindexchanged」がコード(listbox.selectedindex = x)を介して開始するのではなく、ユーザーから来ているかどうかを判断する簡単な方法はありますか?

役に立ちましたか?

解決

私の知る限り、いいえ、単純な方法は組み込まれていません。私ができる最善のことは、コードでそれを変更する直前にフラグを設定し、イベントハンドラーにフラグをリセットして返すことです。

コールスタックの検査を開始して、それがあなた自身のコードのどこかで発生しているかどうかを確認できると思いますが、どれだけの努力に値するかはわかりません。

他のヒント

私にとって、「SelectionChangeCommetted」イベントは私の目的に適していました。ドロップダウンの選択が選択されたときに発射されます。これは、エンドユーザーが変更を開始するときに特定のケースを処理する最も簡単な方法です。 SelectedIndexChangedは、すべてのケースをキャプチャすることです。

プロパティの変更リスナーは、プロパティの変更の原因を区別しません。それはよくある問題です。フラグを設定することはそれを行う方法です。

プロパティの変更イベントを起動せずに値を設定する方法があればいいのにと思います。しかし、その後、人々は、プロパティを使用せずにフィールドを直接変更できるため、オブジェクト指向のモデル全体を破ると主張します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top