none
フォーカスがフォームの枠にあたる RRS feed

  • 質問

  • 環境:Visual Studio 2010

    現在onShowイベントで他の画面から戻ってきた際に

    ActiveControlを設定しています。(念のため.Focus()も記述)

    しかし、フォーカスがコントロールに当たらずフォームの枠?にあたってしまいます。

    フォーカスを確認するため↓キーを押すと[元のサイズに戻す][移動][サイズ変更][最小化][最大化]の小ウインドウが表示されます。

    ~注意点~

     ・フォームの×ボタンはWndProcのWindowsAPIメッセージから×できないようにしている

     ・戻る処理はフレームワークの処理で、画面を表示&非表示することで戻ったように見せている

      A → Bへ(Aは非表示) → Aに戻る(Bを閉じて非表示Aを表示する) 

    フレームワーク依存の処理が多いため再現できないかもしれませんが、何かわかりましたらご連絡を頂きたいです。

    よろしくお願いします。

    2018年2月20日 12:45

回答

  • ならばここで尋ねてもどうにもならないでしょう。フレームワーク作者に問い合わせるべきです。

    とりあえず↓キーでシステムメニューが表示される時点でフレームワークの品質はかなり悪いことが予想されます。Alt+F4キーで終了できたりといった穴がありそう。

    • 回答としてマーク abc_123_ 2018年2月21日 2:30
    2018年2月21日 1:46

すべての返信

  • ~注意点~

     ・フォームの×ボタンはWndProcのWindowsAPIメッセージから×できないようにしている

     ・戻る処理はフレームワークの処理で、画面を表示&非表示することで戻ったように見せている

      A → Bへ(Aは非表示) → Aに戻る(Bを閉じて非表示Aを表示する) 

    その特殊な処理をしているコードを共有していただいた方が良いでしょう。
    そのコードによって起きている現象の可能性があるためです。

    コードが共有(公開)できない場合は、その特殊なギミックを1つずつコメントアウトして、現象を引き起こす部分を特定する(切り分ける)ことを試してみてください。

    2018年2月20日 21:20
    モデレータ
  • 戻る処理はフレームワークの処理(メソッド)のためコードが公開されていません。

    ご指摘のようにこの中に原因があるように思いますがこれ以上調査ができない状態です。

    2018年2月21日 1:27
  • tabは使われていますか? もし、使われているなら、tabページも選択する必要があったと思います。
    また、Focusはカスタムコントロールに使うものであり、通常はSelectを使います。もちろん、ActiveControlでも良いのですが・・・。以下に書かれています。

    (参考)
    Control.Focus メソッド ()
    https://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.focus.aspx


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年2月21日 1:45
    モデレータ
  • ならばここで尋ねてもどうにもならないでしょう。フレームワーク作者に問い合わせるべきです。

    とりあえず↓キーでシステムメニューが表示される時点でフレームワークの品質はかなり悪いことが予想されます。Alt+F4キーで終了できたりといった穴がありそう。

    • 回答としてマーク abc_123_ 2018年2月21日 2:30
    2018年2月21日 1:46
  • フレームワーク部分がどうにもならない前提であがくとして・・・

    表示・非表示の場合、再表示されてもShownイベントは発生しなかったように思います。
    ActivatedイベントでActiveControlすると動くのでは?そういう単純な話ではないです?

    2018年2月21日 2:19
  • .NETのコーディングでは解決できそうにないため、フレームワークに問合せしてみます。

    (Alt+F4は問題ありませんでした、、。)

    2018年2月21日 2:33