プロが教えるわが家の防犯対策術!

オブジェクト配列を宣言した
ラジオボタン(要素数5)を
Enterキーを押すと、順番にチェックを移動する仕様にしたいのですが、
上手くできません。
(5番目の要素からは、1番目の要素へ戻る)

そもそも技術的に可能でしょうか?
詳しい方、教えて下さい。

VB2003のスタンダードエディションです。

A 回答 (1件)

Public Class Form1



Private ctlRadio(4) As RadioButton

Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4
ctlRadio(i) = New RadioButton()
ctlRadio(i).Text = "Radio" + i.ToString()
ctlRadio(i).Location = New Point(10, 10 + i * 20)
ctlRadio(i).TabStop = True
Me.Controls.Add(ctlRadio(i))

AddHandler ctlRadio(i).KeyDown, AddressOf Radio_KeyDown
Next

End Sub

Private Sub Radio_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)

If e.KeyCode = Keys.Enter Then
' 配列からコントロールのインデックスを探す
Dim index As Integer = Array.IndexOf(ctlRadio, sender)

' 次のインデックスにフォーカスを移す
ctlRadio((index + 1) Mod ctlRadio.Length).Focus()
End If

End Sub

End Class


※ VB2005でしか確認していません。
    • good
    • 0
この回答へのお礼

早速のご回答をありがとうございました。
VB2003用に手直しして、動きました。

又、教えて下さい。

お礼日時:2009/12/15 10:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!