0

2つのデータメンバーがSupIDとSupplierNameで1つのコンストラクターを持つクラスSupplierがあり、Form1 load()のときにこのオブジェクトをSupplierのリストに追加します。

    Dim lst As New List(Of Supplier)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       AddList()
    End Sub

    Public Sub AddList()
       lst.Add(New Supplier("Sup1", "Supplier1"))
       lst.Add(New Supplier("Sup2", "Supplier2"))
       lst.Add(New Supplier("Sup3", "Supplier3"))
       lst.Add(New Supplier("Sup4", "Supplier4"))
       lst.Add(New Supplier("Sup5", "Supplier5"))
    End Sub

次に、[送信]ボタンをクリックしたときに、新しいインスタントコンストラクターによってlstをForm2に送信します。

    Private Sub cmdSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSend.Click
       Dim frm As New Form2(lst)
       frm.Show(Me)
    End Sub

次へform2で、次のようにコーディングします。

    Dim lst As New List(Of Supplier)
    Dim bs As BindingSource

    Public Sub New(ByVal lst As New List(Of Supplier)
       Me.InitializeComponent()
       Me.lst = lst
       bs = new BindingSource(lst,nothing)
    End Sub

そして、bsからオブジェクトを削除したいと思います。

    Public Sub cmdRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRemove.Click
       bs.RemoveCurrent()
    End Sub

問題は、Form2のbsからオブジェクトを削除すると、Form1のlstのオブジェクトも影響を受けることです。では、Form1のリストに影響を与えたくない場合はどうすればよいですか?

前もって感謝します....

4

1 に答える 1

1

Try changing the code in Form2 to this:

Dim lst As List(Of Supplier)
Dim bs As BindingSource

Public Sub New(ByVal lst As List(Of Supplier))
   Me.InitializeComponent()
   Me.lst = New List(Of Supplier)(lst)
   bs = new BindingSource(Me.lst, Nothing)
End Sub
于 2012-08-09T05:04:26.143 に答える