投稿者 m190  (社会人) 投稿日時 2012/6/2 01:53:53
これまで私、Form 1個にコントロール 2~3個程度のものしか作ったことが無かったので、
勉強しなきゃと、↓のページを参考に、Form間でのデータの受け渡しに挑戦してみました。

http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard29.htm

で、Formの表示と同時にデータも受け渡せたら便利だなと、↑を見よう見まねで、、、
というよりコピペですが・・・(汗)、オーバーロード版つくってみました。
#ページを読みつつ色んなやり方があるんだなぁと、しみじみ思いました。

こんな感じです
Public Class Form1
    Dim LB1 As New ListBox With {.SelectionMode = SelectionMode.MultiSimple}
    Sub Form_Load() Handles Me.Load         'ここは全部リストボックスの準備 
        Me.LB1.Items.AddRange({1, 2, 3, 4, 5})
        Me.Controls.AddRange({LB1})
        AddHandler LB1.DoubleClick, AddressOf test
    End Sub
    Sub test()                          'ここが DoubleClickした時の処理の部分 
        Form2.Show(MeMe.LB1.SelectedItems)    '←オーバーロード版を呼び出し 
        Me.Hide()               ' Form2へ選択項目の情報を渡したら自分は消える 
    End Sub
End Class

Class Form2
    Inherits Form
    Sub test() Handles Me.FormClosing           'もし自分が消えそうになったら 
        Me.Owner.Show()                         '忘れずに呼び出し元を表示する 
    End Sub
    Public Overloads Sub Show(ByVal Owner As IWin32Window, _
                    ByVal ListBox_DATA As ListBox.SelectedObjectCollection)
        'Form1からListBox(LB1)の選択項目↑も受け取る(&その選択項目の型を指定) 
        Dim LB2 As New ListBox      '←Form2へListBox(LB2)を追加(毎回初期化) 
        Me.Controls.Add(LB2)
        For Each i In ListBox_DATA  'ListBox_DATAは Form1.LB1のSelectedItems 
            LB2.Items.Add(i)            'ListBox_DATAの中身を 1個づつ追加する 
        Next
        Me.Show(Owner)                      '後々のために呼び出し元を覚えておく 
    End Sub     '#見た目がショボいのは勘弁してください(人間見た目じゃないよ!) 
End Class

それで、↑では引数で受け取った ListBox_DATAを 1個づつ追加してますが、
これって何とかして、一度にまとめて追加はできないものでしょうか?
#いっぺんに設定できても良さそうなんですが、型の指定が悪いんでしょうか?

どなたかご存知の方、教えてください。  m(_~_)m<よろしくお願いします