|
■No87262 (shu さん) に返信
サンプルです。(VB.NETです)
ラジオボタンはフォーカス取得するとTabStopがTrueになったりするので
leave時にTabStopをfalseに設定した方がよさそうです。
Form1
-----
Public Class Form1
Implements IUserControl1
Private rows() As UserControl1
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
rows = {UserControl11, UserControl12, UserControl13, UserControl14, UserControl15, UserControl16}
End Sub
Public Sub FocusedTextBox(No As Integer) Implements IUserControl1.FocusedTextBox
For Each row In rows
row.SetActiveText(No)
Next
End Sub
End Class
-----
UserControl1
-----
Public Class UserControl1
Private _Texts() As TextBox
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
_Texts = {TextBox1, TextBox2, TextBox3}
For Each txt In _Texts
AddHandler txt.Enter, AddressOf TextBox_Enter
Next
End Sub
Public Sub SetActiveText(No As Integer)
For idx = 0 To _Texts.Length - 1
If idx = No Then
_Texts(idx).TabStop = True
Else
_Texts(idx).TabStop = False
End If
Next
End Sub
Private Sub TextBox_Enter(sender As Object, e As EventArgs)
Dim txt = DirectCast(sender, TextBox)
If txt.TabStop Then Exit Sub
Dim idx = Array.IndexOf(_Texts, sender)
DirectCast(Me.ParentForm, IUserControl1).FocusedTextBox(idx)
End Sub
Private Sub RadioButton1_Leave(sender As Object, e As EventArgs) Handles RadioButton1.Leave
RadioButton1.TabStop = False
End Sub
End Class
Public Interface IUserControl1
Sub FocusedTextBox(No As Integer)
End Interface
-----
|