none
DataGridViewで、編集モードにない場合にEscapeボタン押下イベントによりフォームのCancelButton設定が有効になるようにしたい。 RRS feed

  • 質問

  • .NetFramework2.0のDataGridViewを継承したカスタム部品を作っています。

     

    現在、エスケープボタンの処理でどうしたらよいものか迷ってしまっています。

    やろうとしていることは、グリッドが現在編集モードにない場合(キャレットがセルの中に入っていなくて、セル全体が青く選択されている状態)であれば、Escapeキーが押されたらフォームにそのイベントが伝達されて、フォームのCancelButtonの設定によりフォームが閉じるようにしたいのです。

     

     同一フォーム上にテキストボックスを置いて、そこにフォーカスがある状態でEscapeボタンを押した場合はちゃんとフォームが閉じることは確認しています。

     

    ただ、標準のDataGridViewで試しても、エスケープはフォームまで伝達されずにグリッドの中でとどまってしまっているようです。

     

    どなたか良い方法をご存じの方はいらっしゃいませんでしょうか。

     

    何卒よろしくお願い致します。

    2008年10月14日 1:44

回答

すべての返信

  • 部品としては解決に至らないかもしれませんが、FormのKeyPreviewをtrueにすることにより、キー入力系のイベントを取得する方法があります。

    http://www.atmarkit.co.jp/fdotnet/dotnettips/229parentkeyproc/parentkeyproc.html

     

    2008年10月14日 15:24
  • GENZ0 さん、ありがとうございます。

    フォームのKeyPreview自体はTrueにしているのですが、ただ、Formも継承していたりしまして、キーイベントがどのようにルーティングされていくのか整理しきれなくて...。

     

    もう一度確認してみたいと思います。

    ありがとうございました。
    2008年10月15日 1:29
  • こんにちは。中川俊輔 です。

     

    GENZ0さん、回答ありがとうございます。

     

    まみやさん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、GENZ0さんの回答へ回答済みチェックをつけさせていただきました。

     

    今後もフォーラムをよろしくお願いします。

    それでは!

    2008年10月24日 9:25