tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルフォーカス移動
記事No4354
投稿日: 2006/09/29(Fri) 11:07
投稿者きむち
いつも参考にさせて頂きありがとうございます。
VB6からVB2005にしたのですが、クラスモジュールを使用して『3桁の英数字が入力されたら、次のテキストボックスへ移動する。』処理をさせようとしているのですが上手く行きません。
どうかご教授お願い致します。

Public Class Form1
    Public TBox(20) As TextEvents
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles MyBase.Load

        Dim N As Integer
        For N = 1 To 5
            TBox(N) = New TextEvents
            TBox(N).SlaveTextBox = New TextBox
            TBox(N).SlaveTextBox.Font = New Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point)
            TBox(N).SlaveTextBox.CharacterCasing = CharacterCasing.Upper
            TBox(N).SlaveTextBox.ImeMode = Windows.Forms.ImeMode.Disable
            TBox(N).SlaveTextBox.TextAlign = HorizontalAlignment.Center
            TBox(N).SlaveTextBox.Width = 100
            TBox(N).SlaveTextBox.Height = 20
            TBox(N).SlaveTextBox.MaxLength = 3
            TBox(N).SlaveTextBox.Location = New Point(0, (N - 1) * 25)
            Me.Controls.Add(TBox(N).SlaveTextBox)
        Next
    End Sub
End Class


Public Class TextEvents
    Public WithEvents SlaveTextBox As TextBox
    Private Sub SlaveTextBox_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles SlaveTextBox.DoubleClick
        SlaveTextBox.Text = ""
    End Sub
    Private Sub SlaveTextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles SlaveTextBox.GotFocus
        SlaveTextBox.SelectionStart = 0
        SlaveTextBox.SelectionLength = Len(SlaveTextBox.Text)
        SlaveTextBox.BackColor = Color.White
    End Sub
    Private Sub SlaveTextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles SlaveTextBox.LostFocus
        SlaveTextBox.BackColor = Color.LightGray
    End Sub

    Private Sub SlaveTextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)Handles SlaveTextBox.TextChanged
        If Len(SlaveTextBox.Text) >= 3 Then

'*****************************************************************************
'****************************************************************************          
'ここが上手くできません。
            Me.SlaveTextBox.GetNextControl(sender, True).Focus()
'****************************************************************************
'*****************************************************************************

        End If
    End Sub
End Class

[ツリー表示へ]
タイトルRe: フォーカス移動
記事No4355
投稿日: 2006/09/29(Fri) 11:41
投稿者大吉末吉
> 'ここが上手くできません。
>             Me.SlaveTextBox.GetNextControl(sender, True).Focus()

「GetNextControl」は、
「子コントロールのタブ オーダー内の 1 つ前または 1 つ後ろのコントロールを取得します」
#ヘルプより抜粋。

なので、メソッドの実行対象は「Me.SlaveTextBox.」ではなく、Senderを含む親コントロール(今
回の場合はForm)を
指定しなければならないのではないでしょうか?

[ツリー表示へ]
タイトルRe^2: フォーカス移動
記事No4358
投稿日: 2006/09/29(Fri) 14:10
投稿者きむち
> なので、メソッドの実行対象は「Me.SlaveTextBox.」ではなく、Senderを含む親コントロール(今
> 回の場合はForm)を
> 指定しなければならないのではないでしょうか?

ご教授頂いた様Formに書換えたら、思ったとおり動くようになりました。
(Formに対しては『GetNextControl』は使用できないようなので
   Form1.SelectNextControl(sender, True, True, True, True)で・・・)
大吉末吉さんありがとうございました。助かりました。

[ツリー表示へ]