|
分類:[VB.NET/VB2005 以降]
VB2008 WinXP Pro SP3
お世話になります。 フォームにDataRepeaterを配置し、いろいろと操作しています。 今引っかかっているのは、 あるDataRepeater内のTextBoxにフォーカスがある状態で、 キーボードの矢印下や矢印上のキーを押したとき、 DataRepeater内の次の行(または前の行)の同じTextBoxに フォーカスを移したいのですが、なかなかできません。
例:DataRepeater1 に txt1 という名前のTextBoxがあり、 キーボードの矢印下キーを押したときのコード
Private Sub txt1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles txt1.PreviewKeyDown
Dim f02int1, f02int2, f02int3 As Integer
f02int1 = Me.DataRepeater1.ItemCount f02int2 = Me.DataRepeater1.CurrentItemIndex
If f02int1 - 1 = f02int2 Then Exit Sub '次のレコードがない Exit
f02int3 = f02int2 + 1 Me.DataRepeater1.CurrentItemIndex = f02int3 'CurrentItemを移動 Me.DataRepeater1.CurrentItem.Controls.Item("txt1").Focus() End Sub
このコードを動かしてみても、 txt1からフォーカスは離れるのですが、その行全体のフォーカスになってしまい、 下の行にも移りません。 ただ、いろいろと確認用のコードを入れてみると、 次の行のtxt1 に一旦フォーカスは移っているようなんですが、 すぐに前の行全体をフォーカスする状態に戻ってしまいます。 txt1は Enabled = True です。
フォーカスを移す方法がありましたら、ご教授ください。
|