- PR -

EnterKeyでのカーソル移動

1
投稿者投稿内容
まー
会議室デビュー日: 2003/06/17
投稿数: 8
投稿日時: 2003-06-19 11:15
V.BのWindowsフォームでEnterKeyを押下した時に
次のTabIndexにカーソルを移動する方法を教えて
ください。
例えばフォームにTextBoxが2つあってEnterKeyを押下すると
TextBox1からTextBox2にカーソル移動するやり方です。
V.B 6.0はKeyNextとかいうプロパティがあったと思うんですが…。
同じことです。
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-06-19 12:33
私の場合は以下のようにしています。
テキストボックスのKeyDownのイベントに以下のハンドラを割り当てる。

VB.NETだとこんな感じかな?

コード:
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If e.KeyCode = Keys.Enter Then
        Me.SelectNextControl(sender, False, True, True, True)
    End If
End Sub



とりあえずこの方法を思いついたのですが、もっとスマートなやり方があるかも知れません。
他の方法をご存知の方がいらっしゃったらご教授ください。
まー
会議室デビュー日: 2003/06/17
投稿数: 8
投稿日時: 2003-06-19 16:08
できました。
ありがとうございます。
takesy
会議室デビュー日: 2003/07/09
投稿数: 2
投稿日時: 2003-07-09 17:46
こんにちわ

C#で実現しようとして、KeyDownイベントに下記のように記述したのですが、
うまくいきません。(false が返ってきます。)
移動先のコントロール名を明示的に指定するとうまくいきます。
ただし、移動先のコントロールのcanfocus プロパティを見てみると、
falseになっています。
何が悪いのでしょうか?
(当初 SelectNextControlメソッドの一番目の引数は sender と記述していたのですが、それだとコンパイルエラーになりました)

if
(e.KeyValue == 13)
{
this.ActiveControl.SelectNextControl(this.ActiveControl,true,true,true,true);
}
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-07-10 16:32
> this.ActiveControl.SelectNextControl(this.ActiveControl,true,true,true,true);

キャストすればOKだと思います。
(出先なので確認できませんが...(Control)だったかな。)

念のために、isで型をチェックしてからキャストしてみてください。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-07-10 16:35
キャストいらなかったみたい...。

こちらは参考になりませんか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5118&forum=7&6
takesy
会議室デビュー日: 2003/07/09
投稿数: 2
投稿日時: 2003-07-12 11:41
出来ました!


>this.ActiveControl.SelectNextControl
これが悪かったみたいです

this.SelectNextControl(this.ActiveControl,true,true,true,true);

でうまくいきました。
ななさん、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)