tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル VB2005の配列の扱いについて
投稿日: 2007/09/05(Wed) 10:54
投稿者皐月
VB6.0からVB2005への移行を行っています。VB6.0ではCheck1(i)というチェックボックスをコントロール配列でまとめCommandChk(i)という配列にValue値を保存するようなプログラムを作成していました。以下がそのコードです。

<VB6.0>
Private Sub Command1_Click()
    Dim i As Integer
        
    For i = 0 To 100
        Commandchk(i) = Check1(i).Value
    Next i
    Unload Me
End Sub

Commandchk(i)の配列に保持した値は、再度メインフォームからCommand1_Clickの処理があるフォームを呼び出されたときに、Check1(i)に代入され、どのチェックボックスにチェックが入っていたか呼び出すことが可能です。

上記の処理をVB2005で実現しようと思ったのですが・・・。以下はイベントプロパティCheckedChangedを利用してまとめようとしました。

<VB2005>
Private Sub docommand(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox99.CheckedChanged, CheckBox98.CheckedChanged, CheckBox97.CheckedChanged, CheckBox96.CheckedChanged, CheckBox95.CheckedChanged, CheckBox94.CheckedChanged,・・・・100個あるため省略・・・・・CheckBox1.CheckedChanged

        Dim ChkOn As CheckBox
        Dim No As String

        ChkOn = CType(sender, CheckBox)
        No = Microsoft.VisualBasic.Left(ChkOn.Name, 9)
        MsgBox("ボタン[" & Me.Controls(2).Name & "]が押されました")
    End Sub

省略している部分からもわかるように非常に頭でっかちな、ソースになってしましました。また、コントロール配列が使えないことから、どのCheckBoxにチェックがついているのかどのように保持すればよいのかわからなくなってしまいました。チェックボックスひとつひとつの状態を見ていくコードを書くのは面倒だし、ソース的にも美しくありません。Indexの代わりになるような値はないのでしょうか?

なんとかVB6.0でのソースのようにスマートにしたいのですが、本に書いている方法はどれもCheckedChangedイベントだったので、やはり頭でっかちな部分が気になります。なにはスマートないい方法はないでしょうか?

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。