C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.92490 の関連記事表示

<< 0 >>
■92490  Re[5]: 確定前の文字列がある状態でテキストボックスのフォーカス移動
□投稿者/ 田中 -(2019/09/30(Mon) 15:00:38)
    >WebSurferさん 774RRさん 魔界の仮面弁士さん

    色々とテストしていただきありがとうございます。
    かなり長く困っていた部分ですので(バグとのことで解決には至りませんでしたが)
    とてもすっきりしました。初めてですが掲示板で相談してよかったと思っています。

    ご助言いただきましたとおりMicrosoftForumsには書き込みをしてみました。
    ※初めて書き込むので不慣れですが、何かフォローすべきことがあれば
     教えていただけますと幸いです。

    https://social.msdn.microsoft.com/Forums/ja-JP/c84d040b-b85b-4f85-a7d1-e76de274b8e5?forum=netfxgeneralja



    根本的な解決については、バクの解消となるかと思いますが、
    そちらはMicrosoftForumsで検討していきますが。

    (かなり昔から存在しているバグのようなので希望を薄く感じており)
    こちらの掲示板では回避を検討できないか考えておりますので、
    もう少しお付き合いいただけますと幸いです。


    回避策を2つ考えたのですが、もしもう少し工夫したほうが良いとか、
    このソースをもとに何か良いご意見いただけましたら幸いです。

    ※今回の問題とは未関係ですが、2番の方法を応用すると
     OSの設定を変更しなくても、IMEモードを半角カタカナ等に
     変更できることがわかりました。


    1.少し原始的ですが、SendKeysでエスケープキーのキーイベントを送信する。

    Private Sub TextBox_GotFocus(sender As Object, e As EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox2.Enter
    SendKeys.Send("{ESC}")
    SendKeys.Send("{ESC}")
    SendKeys.Send("{ESC}")
    End Sub


    2.Text Services FrameworkにてInputScopeを変更し、別のInputScopeとして認識させて
     変換中のテキストをキャンセルさせる。

    <DllImport("msctf.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
    Private Shared Function SetInputScope(ByVal hwnd As IntPtr, ByVal inputscope As IntPtr) As IntPtr

    End Function


    Private Sub TextBox_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox3.Enter
    'SetInputScope(DirectCast(sender, TextBox).Handle, 40) 'アルファベット
    SetInputScope(DirectCast(sender, TextBox).Handle, 44) '日本語入力
    'SetInputScope(DirectCast(sender, TextBox).Handle, 45) '半角カタカナ
    End Sub

    Private Sub TextBox_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress, TextBox3.KeyPress
    SetInputScope(DirectCast(sender, TextBox).Handle, 0) 'デフォルト
    End Sub

記事No.92477 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -