0

モーダルでないフォームを離れる (閉じない - 別のフォームにフォーカスを設定する) ときに保存確認メッセージを表示する最良の方法は何ですか?

ユーザーには次のオプションがあります。

  • はい (変更を保存し、フォーカスを targetform に設定します)
  • いいえ (ロールバックしてフォーカスをターゲット フォームに設定)
  • キャンセル (アクティブなフォームを維持 - ターゲット フォームへのフォーカスの設定をキャンセル)

フォーカスが別のフォームに設定されないようにする解決策が見つかりません。FormClosingEventArgs.Cancel プロパティを使用できるクロージング イベントと同様です。

私の場合、モーダルフォームを使用することは受け入れられません。

前もって感謝します

4

2 に答える 2

0

これを行う最良の方法は、OnLostFocusイベントをオーバーライドすることです。コードは次のとおりです。

protected override void OnLostFocus(EventArgs e) { 
    base.OnLostFocus(e); 
    this.Focus(); 
}
于 2012-10-02T12:52:18.043 に答える
0

まず、Deactivatedイベントを使用して、フォームがフォーカスを失ったことを検出できます。次に、ユーザーがフォーカスを失ったフォームにとどまりたい場合は、BringToFrontメソッドを呼び出してフォームを再びアクティブに設定できます。

ユーザーが別のフォームをアクティブ化するのを防ぐことはできませんが、(上記を使用して) アクティブ化を現在のフォームに戻すことはできます。

于 2012-10-02T12:37:40.563 に答える