0

いくつかのカスタムコントロールを使用する.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;
    }
}
4

2 に答える 2

1

イベントでこれを処理する必要はないと思います-それは問題を複雑にするだけです。これは線形の問題であり、ダイアログポップアップが現在のスレッドを停止し、ユーザーの決定を処理するのに十分な制御を提供します。このシナリオのイベントは、「UserSelectionChanged」イベントです。これ以上は必要ありません。

于 2012-07-18T08:59:52.157 に答える
1

どちらの場合も問題ないように見えますが、ロジックの一貫性を保つためです。場合によっては、ユーザーコントロール内にファイルの読み込み/コンテキストの読み込みをカプセル化してから、使用イベントを保持します。それ以外の場合は、ターゲットフォーム/コントロールで処理します。

于 2012-07-18T09:34:07.793 に答える