いくつかのカスタムコントロールを使用する.NETアプリケーションを開発しています。
特定のコントロールの1つは、コントロールのような単純な「テキストエディタ」であり、ユーザーの選択に基づいて一部のコンテンツが読み込まれます。
ユーザーがこのコントロールのテキストを変更してから、そのコンテンツを上書きする別の選択を行った場合、「保留中の変更を保存しますか?はい/いいえ/キャンセルしますか?」という通常のポップアップが表示されます。
私は、アプリケーションのどのレベルがこれに関与するべきかを検討しています:コントロール自体またはそれを使用するコード?
私は既存のCancelEventArgsクラスを調べて、それを使用することを検討していますが、これがこの特定のシナリオに適しているかどうかはわかりません。
私が考えていたサンプルコード:
カスタムコントロールのテキストを設定するときは、「BeforeChanged」イベントを発生させます。これは処理され、操作をキャンセルできるようになります。
public void SetText(string text)
{
CancelEventArgs args = new CancelEventArgs();
// Raise the BeforeTextChanged event.
BeforeTextChanged(args);
// If the user cancelled the operation - do not modify text.
// For example, user code will check if needs saving, show the popup, etc.
if (args.Cancel)
{
return;
}
}