none
フォーカスが失われたままになってしまう RRS feed

  • 質問

  • 標準のテキストボックスでは機能が足りないのでテキストボックスを作ろうと思っています。手始めにOnKeyDown()が入力されたら文字を表示するようにして見ました。これはうまくいったのですが、左クリックでキャレットを置いてそのまま移動させ選択状態にするとOnKeyDown()が呼び出されなくなってしまいます。System.Diagnostic.Debug.WriteLineでイベントを追跡したところ、PointerPressed→PointerMoved→PointerReleased→LostFocusedの順番でイベントが発行されていることが分かりました。これを回避するためにPointerReleasedの所でControl.Focus(FocusState.Programmatic)を呼び出してみたのですが、PointerReleased→GotFocuse→LostFocusedとなってしまいうまくいきませんでした。

    どうすれば、マウスで選択した後で文字を入力することができるようになるんでしょうか。調べても回避策が出てこないので、回避策があったら教えてほしいです

    http://kie.nu/_aG

    (現象が再現できる最小のコードを置いておきます)

    2013年5月10日 8:06

回答

  • ジェスチャーのサンプルを眺めたところ、該当イベントでe.Handled=trueとなっていたのでそのようにしてみたところ、例の現象は発生しなくなりました

    どうやらデフォルトの処理だとなぜかキー入力できなくなるような処理が組み込まれているようです
    • 回答としてマーク jbh03215 2013年5月17日 12:29
    • 編集済み jbh03215 2013年5月17日 12:30
    2013年5月17日 12:29

すべての返信

  • 標準のテキストボックスでは機能が足りないので
    そもそもどのような機能が足りなかったのでしょうか?
    それによっては、自前でテキストボックスを作るよりも簡単な解決策が出てくるかもしれません。
    2013年5月10日 9:40
  • こういう機能がないので作ろうと思い立ちました

    ・折り畳み

    ・矩形選択および矩形編集

    ・シンタックスハイライト

    ・ルーラーと行番号の表示

    ・クリッカブルURL

    2013年5月10日 10:04
  • ジェスチャーのサンプルを眺めたところ、該当イベントでe.Handled=trueとなっていたのでそのようにしてみたところ、例の現象は発生しなくなりました

    どうやらデフォルトの処理だとなぜかキー入力できなくなるような処理が組み込まれているようです
    • 回答としてマーク jbh03215 2013年5月17日 12:29
    • 編集済み jbh03215 2013年5月17日 12:30
    2013年5月17日 12:29