none
TextboxなどのLeaveイベント処理をキャンセルボタン押下時だけ処理しない RRS feed

  • 質問

  • お世話になります。

    TextboxなどのLeaveイベント処理をキャンセルボタン押下時だけ処理しないといった

    具合に出来ますでしょうか?

    そもそもTextboxのLeaveイベントの段階で次の遷移場所である

    クリックされたコントロールの情報は得られますでしょうか?

    教えて頂ければ幸いです。

    2012年10月16日 2:56

回答

  • 標準的な手法では無理だと思いますので、なんらかの回避策を考える必要があると思います。

    フラグ管理でもいいですし、イベントハンドラの追加削除を行っても良いでしょう。

    何を用途に考えられているかわかりませんが、入力チェックを行いたい場合は Validating, Validated イベントが利用できるかもしれません。こちらは入力チェック用のイベントですので、CauseValidation プロパティを使って「キャンセルボタンの時だけ処理しない」とか、「ファイル名の入力にエラーがある状態でも、参照ボタンだけは押せる」といった制御が可能になっています。

    • 回答の候補に設定 佐伯玲 2012年10月16日 6:35
    • 回答としてマーク 佐伯玲 2012年10月22日 4:05
    2012年10月16日 3:17
  • とりあえず、LeaveイベントプロシージャでFormのActiveControlでクリックされたコントロールを取得できました。Leaveイベントの発生とActiveControlの設定の順序を保障する資料を見つけられていませんので、必ずしもうまくいく確証は得られていません。
    ただ、本当に実現されたいことによっては方向性が違うかな?とも思いました。
    例えば、キャンセル時には処理を行わないということであれば、Form自体をFormの右上のXをクリックしたり、ALT+F4で閉じたした場合のことなども考慮しなければなりません。もっともこの場合はLeaveイベントが発生しないので問題はないと思うのですが、何かしら方向性が違うような感じがしたものですから・・・。感じがしただけなので間違っていたらごめんなさい。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 佐伯玲 2012年10月16日 6:35
    • 回答としてマーク 佐伯玲 2012年10月22日 4:05
    2012年10月16日 3:37
    モデレータ

すべての返信

  • 標準的な手法では無理だと思いますので、なんらかの回避策を考える必要があると思います。

    フラグ管理でもいいですし、イベントハンドラの追加削除を行っても良いでしょう。

    何を用途に考えられているかわかりませんが、入力チェックを行いたい場合は Validating, Validated イベントが利用できるかもしれません。こちらは入力チェック用のイベントですので、CauseValidation プロパティを使って「キャンセルボタンの時だけ処理しない」とか、「ファイル名の入力にエラーがある状態でも、参照ボタンだけは押せる」といった制御が可能になっています。

    • 回答の候補に設定 佐伯玲 2012年10月16日 6:35
    • 回答としてマーク 佐伯玲 2012年10月22日 4:05
    2012年10月16日 3:17
  • とりあえず、LeaveイベントプロシージャでFormのActiveControlでクリックされたコントロールを取得できました。Leaveイベントの発生とActiveControlの設定の順序を保障する資料を見つけられていませんので、必ずしもうまくいく確証は得られていません。
    ただ、本当に実現されたいことによっては方向性が違うかな?とも思いました。
    例えば、キャンセル時には処理を行わないということであれば、Form自体をFormの右上のXをクリックしたり、ALT+F4で閉じたした場合のことなども考慮しなければなりません。もっともこの場合はLeaveイベントが発生しないので問題はないと思うのですが、何かしら方向性が違うような感じがしたものですから・・・。感じがしただけなので間違っていたらごめんなさい。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 佐伯玲 2012年10月16日 6:35
    • 回答としてマーク 佐伯玲 2012年10月22日 4:05
    2012年10月16日 3:37
    モデレータ
  • 早速の回答ありがとうございます。

    私も Validating, Validated イベントかなとは思っていたのですが

    ”CauseValidation プロパティを使って「キャンセルボタンの時だけ処理しない」とか、「ファイル名の入力にエラーがある状態でも、参照ボタンだけは押せる」といった制御が可能”

    は知りませんでした。

    こちらの方での処理で可能か考えてみます。

    ありがとうございました。

    2012年10月16日 4:12