- - PR -
Enterキーでのフォーカス移動(漢字変換中のEnterキーを拾う不都合)
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-13 15:53
現在、VB6より乗り換えて、VB.NETでWindowsアプリを開発しています。
Enterキーが押されたときに、TABキーと同様の動作をさせて TabIndex順にフォーカスを移動させる処理を作成中なのですが、 この会議室を参考にさせていただき、以下のようにプログラミングしました。 Private Sub TextBox1_KeyDown(ByVal sender As Object, _ ByVal e As _Sytem.Windows.Forms.KeyEventArgs) _ Hadles TextBox1.KeyUp If e.KeyCode = Keys.Enter Then Me.SelectNextControl(sender, True, True, True, True) End If End Sub これで、うまく動作したのですが、一点、不都合がありました。 それは、漢字変換の確定のEnterキーも拾ってしまうので、 漢字変換の途中に、フォーカスが移動してしまうのです。 VB6の時は、 Private Sub TextBox1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then KeyCode = 0 SendKeys "{TAB}" End If End Sub で、漢字変換のEnterキーは拾わず、うまくいっていたのですが・・・。 もし、何かアドバイス等がありましたら ぜひご教授くださいますようお願い致します。 [ メッセージ編集済み 編集者: ゆうパパ 編集日時 2005-05-13 15:56 ] | ||||||||
|
投稿日時: 2005-05-13 16:09
こんにちわ。
コントロールがアクティブ(入力状態)である場合には、移動をスルーさせるようにすればよいと思います。 If Not TypeOf Me.ActiveControl Is TextBox And (CType(Me.ActiveControl, TextBox)).Multiline = True Then Me.SelectNextControl(....略 End If こんな感じでどうでしょう? | ||||||||
|
投稿日時: 2005-05-13 16:23
こんにちは、じゃんぬ です。
普通は、なりません。
KeyDown という名前のわりに、ハンドラが KeyUp になっているからでは? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-05-13 16:25
ゆうパパさんのコード、ちょっと妙じゃないですか?
プロシージャ名がTextBox1_KeyDownなのにHandlesで指定しているのがTextBox1.KeyUpになっていますよ。 KeyUpイベントではなく、KeyDownやKeyPressを使うとうまくいきます。 私はKeyPressを使っています。 | ||||||||
|
投稿日時: 2005-05-13 16:36
KIMERAさん、じゃんぬねっとさん、rucioさん、どうもありがとうございました。
全く、私の単純なミスでした。申し訳ありません。 じゃんぬねっとさん、rucioさんの御指摘どおりです。 実際のコードではプロシージャ名もHandlesもTextBox1_KeyUPでやっていました。 VB6でやっていたコードを見た時、KeyDownイベントでやっていたので、 ここに書き込む時、プロシージャ名だけTextBox1_KeyDownに直していました。 TextBox1_KeyDownイベントに変更したらうまくいきました。 (KeyUPイベントではうまくいかないのですね。) どうもありがとうございました。 | ||||||||
|
投稿日時: 2005-05-13 16:54
こんにちは、じゃんぬ です。
解決できたようで、良かったです。(^^)
変換が確定してから、駆動しますからね。 押した時点で確定 -> フリーの状態に -> キーを押し上げる -> KeyUp イベント発生 # 要らぬレスとは思いますが、後からの方のために。 フォームで [Enter] キーが押された時にフォーカスを遷移させる も参照のこと。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-05-13 17:58
じゃんぬねっとさん、重ね重ねありがとうございます。
「フォームで [Enter] キーが押された時にフォーカスを遷移させる」 にも行ってみました。 他にも色々と参考になりそうなサンプルがおいてありますね。 なかなかこういうサンプルページにいきあたらなくて・・・。 まさに「宝の山をみつけた」状態です。 ありがとうございました。 |
1