• 締切済み

TextBoxで日本語変換確定の判断について

お世話になっております。 現在、下記環境において テキストボックス内で日本語変換確定時にのみ ある処理(結構おもい処理)を行いたい考えています。 変換確定の判断として KeyUpイベントで「Return」のときとしたのですが(下記「検討中のロジック」)、 たまに「Return」を検知できないことがあり困っております。 どんな時に「Return」が抜けるのか または、回避策等ございましたら ご教示頂けないでしょうか? (TextCompositionManager は使用テキストボックスが System.Windows.Forms TextBox クラスのため使用できません) ■環境 windows7 Visual Studio 2010 言語:C#/WPF ■検討中のロジック (1)KeyDownイベントで「ProcessKey」の場合IMEフラグON (2)KeyUpイベントで「Return」かつIMEフラグONなら「変換確定!」

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

System.Windows.Forms TextBox クラスはフォームで使うのであって、WPFではないのではないでしょうか? コンテナを使うと使えるけど。

alp_tomy
質問者

お礼

自己レスです。 TextChanged イベントで前回値と比較することで 思っていた動作が実現できそうです。 ありがとうございました。

alp_tomy
質問者

補足

oboroxx様ご回答ありがとうございます。 本部品の使用に関しましては諸般の事情で変更できないため、 そこへのツッコミはご容赦頂けないでしょうか??

関連するQ&A

  • SSTABでのKEYDOWNイベント

    VB6・SP5で開発を行っています。 FormのKEYDOWNイベントでPageUp・PageDownの押下の際に、 SSTAB上のアクティブなTABをずらす処理を行おうとしています。 問題はSSTAB上にフォーカスが移った直後だけ、 KEYDOWNイベントが2回実行されてしまうというものです。 KEYUPについても同様でした。 このような現象をご存知の方、 対処方法をお教えくださる方がいらっしゃいましたらよろしくお願いします。 ちなみにモジュール変数等のフラグはなるべく使用したくありません。

  • C# でIME の状態を知るには?

    VisualStudio 2010 C# form アプリケーションです。 テキストボックスの内容(キーワード)で検索するプログラムを作りました。リターンキーを押す度に候補に順にスクロールします。 KeyDown イベントでe.KeyCode == Keys.Return でリターンキーを拾っています。 ところでIME で漢字入力中に確定でリターンキーが押されますが、それだと変換途中の場合もある訳です。もちろんIME のボックスでのリターンキーですから、テキストボックスには飛んでこないと思っていたのですが・・・どうやらリターンキーが押されたという事でイベントが発生してしまいます。 変換途中でのリターンキーには反応させたくないのです。なにか手がありますか?

  • 【VB.NET】テキストボックスでENTERを押したときに出る警告音を止めたい。

    Multilineを許可していない状態のテキストボックスでENTERを押すと改行出来ないから警告音がでるのは分かるのですが、KeyUpやKeyDownイベントをENTERキーで発生させたい為どうしても警告音が出てほしくないのですが警告音を出さないようにする方法ってないでしょうか? よろしくお願いします。

  • テキスト入力→変換→確定・・・消えた?

    最近hotmailで本文を入力してる時によく発生するんですが、 テキスト入力→変換→確定しようとしてリターンを押した瞬間に 入力したものが消えてしまい、まったく入力できないことがあります。 (テキストの貼り付けはできる) これって何か原因があるんでしょうか? ほかに同じような現象起きてる人いませんか?

  • VBAのイベント処理について

    VBAのイベント処理について お世話になってます。現在、VBAでアプリケーションを作成しています。 1つのフォームに4つのテキストボックスと1つのボタンが配置されており、それぞれイベントが設定されています。 その中のテキストボックスに関するイベントなのですが、1つのテキストボックスに対してKeyPress、KeyDown、MouseUp、AfterUpdate、以上4つのイベントを作成します。 フォームに配置されている4つのテキストボックスすべてに、上記で示したイベントを作成する必要がありますが、各イベントにおける処理の内容はオブジェクト名が違うだけで全く同じです。 ひとつひとつイベントを作成していけば、処理目的は満たせそうですが、ソースがかなり長くなってしまいます。ひとつのオブジェクトに対してこれらの処理をひとまとめにする様な記述方法はありませんでしょうか?考え方だけでも教えていただければ幸いです。 質問が長くなってしまい申し訳ありません。回答宜しくお願い致します。

  • KeyUpイベントにて

    テキストボックスのKeyUpイベントにて『Enter』または『Tab』が押されたら処理をさせようと Private Sub Text_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Text.KeyUp If e.KeyCode = Keys.Enter or e.KeyCode = Keys.Tab Then   処理コード End If End Sub としたのですが『Enter』のときしか処理コードが反映されません ご教授お願いします

  • richtextで入力文字列確定時にイベント

    VB6ですが、 RichTextBoxで文字列を入力し、変換終了後Returnキーにて、確定をした時のイベントを取得したい。 KeyPressイベントやkeydownイベントは変換確定時には、IMEに占有されていてイベントが起きないのです。 具体的にどんなソフトを作っているのかというと、 1.入力済みの文字列の一部(例えば「AB」)を反転して選択。 2.そして新しい文字列を入力(例えば「あいうえお」)。 3.Returnキーで確定時に反転していた文字列を新しく入力した文字列の「あいうえお」の「うえ」の間に挿入した文字列を入れたい。 4.結果は、「あいうABえお」と入力される。 というもの 入力時にイベントを起こせれば、自力で何とかなると思うのですが…… 文章下手で申し訳ありません。 よろしくお願いします。

  • イベントの発生を待つ

    現在、テキストボックスへの文字入力を待つプログラムを作っております。 Form.Load()によって呼び出されるプロシージャの中で、フォームのテキストボックスへのキーの入力があるまで待機するプログラムとなっております。 方針としては、まずBoolean型のフラグを用意し、まずTextBoxのKeyPressイベントでこのフラグをオンにし、メインのプロシージャでは必要個所でDoループを回してこのフラグを確認し、オンになっていたらオフにしてループを抜け出すというプログラムです。 このループの中にSleep()関数を入れたりしても、ループのところでアプリケーションがフリーズしてしまいます。(ブレークポイントなどで確認しました) もっと効率のよい方法をご存知でしたらご伝授ください。 (KeyPressイベントの中に直接処理を書けばいいじゃないか、とおっしゃるかもしれませんが、今回はあくまでメインプロセスから読む必要があったため、質問をさせていただきました。)

  • TextBoxでEnterキーを押すと、にあるButtonを押したのと同じ効果を出す方法

    VB初心者です。 まだ、はじめたばかりなので、上手く質問を説明できませんが、よろしくお願いします。 環境はVisualBasic .net 2003です。 フォームにテキストボックス(TextBox)とボタン(Button)があります。 テキストボックス内でEnterキーを押すと、ボタン(Button)を押したのと同様の効果をだしたいのですが。 VC++6.0だと、SendMessage(WM_COMMAND , ..... のようなやり方でできたはずですが・・・ --------------------------- テキストボックスのコード Private Sub txtTest_KeyDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTest.KeyDown If (e.KeyCode = Keys.Enter) Then '★★★ここでどういうコードを書いてよいかわかりません。 End If End Sub ---------------------------- ボタンを押したときのイベントハンドラ Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click     ボタンを押したら、このイベントハンドラを呼び出したい。     もしくは、間接的に呼び出したい。 ------- どなたか、やり方をご存知の方がいらっしゃいましたら、よろしくお願いします。

  • 変換の型を強制的に設定する

    windos NTでAccess2000を使っています。 あるフォームを作ったのですが、 プロパティでIME入力モードをONにしているにも関わらず 変換可能な英数半角になってしまいます。 (テーブルの方も確かめましたが入力モードはONになっていました) しかも次のレコードで同じボックスにタブを進めると 今度は無変換の英数半角になってしまうし…(*_*) このボックスがコンボボックスだからなのでしょうか?? あと同じような問題でチェックボックスのところにタブが行くと 全角変換モードになってしまうので テンキーの「+」「-」で操作しようとしても Enterを確定のために2回叩かなければいけません。 なんとかスムーズに入力をするために 半角入力(無変換)設定+ひらがな入力設定のプログラムを用意したほうが 確実だと思うのですがどうなのでしょうか? 何かよい案のある方、解答をよろしくお願いします。

専門家に質問してみよう