none
MDI子フォームフォーカスを取得したい RRS feed

  • 質問

  • MDI親のメニューバーのコントロールを操作終了後、子フォームにフォカースを移動したい。

    子フォームのClickイベントメソッドに

    Activate();
    

    を実装しましたが、ただしフォカースをもらえません。

    どうすればいいか、教えていただきたいです。

    (子フォームは一回最小化すれば、フォカースをもらいましたが…)

    2013年3月25日 7:09

すべての返信

  • もう少し詳しい状況を書いていただかないと何が問題になっているのかがわかりません。
    子フォームにフォーカスを与えるだけなら、
    子フォームのインスタンス.Focus();
    なのですが、これでは不都合があるということですよね?


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

    2013年3月25日 7:57
    モデレータ
  • 子フォームのインスタンス.Focus();をしたが、falseなので、フォカースを与えません。

    子フォームのClickイベントメソッドに Activate(); にしでも フォカースをもらえません。

    子フォームは画像表示フォームなので、フォカースをもらえないと子フォームのPreviewKeyDownイベントを行けません。困っています。

    よろしくお願いします。


    • 編集済み nob9292 2013年3月26日 5:34
    2013年3月26日 5:32
  • 何がfalseなのでしょうか? また、falseにしている理由は何でしょうか? falseにしなければうまく行くのでしょうか?
    通常は、子フォームのインスタンス.Focus();でフォーカスが子フォームに行くのですが、行かない理由がわからなければ、誰も回答しづらいと思います。


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

    2013年3月26日 5:43
    モデレータ
  • 子フォームのインスタンス.Focus();後、戻り値は確認しました。falseです。何か理由はわかりませんからです。

    子フォームは一回最小化後、Focus()の戻り値はtrueです、うまく行けます。


    • 編集済み nob9292 2013年3月26日 6:31
    2013年3月26日 6:28
  • 状況が本当に把握できていないので、もう少し情報をまとめて一度に出していただけると助かります。
    私は今までのことから以下のように想像してみましたが、合っていますか?

    まず、子フォームですが、画像表示ということでPictureBoxを使用していませんか? でれば、元々PictureBoxはフォーカスを受け取ることはできません。よって、PreviewKeyDownイベントは発生しません。
    もし、PictureBoxでキーが押されたことを捉えるのであれば、子フォームのKeyDownイベントを使うことができます。その際、もし子フォームにPictureBox以外のコントロールがあるなら、子フォームのKeyPreviewプロパティをtrueにして下さい。


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

    2013年3月26日 7:26
    モデレータ
  • その通りです。

    子フォームはPictureBoxを使用しています。PictureBox以外のコントロールはありません。

    親フォームのメニューパーにコンボボックスがあります。この値を変更後、子フォームのPictureBoxはPreviewKeyDownイベントは発生したいです。ただし子フォームの画像をクリックしでもフォカースが移動しません。

    2013年3月26日 7:50