代码
Private myAL As New ArrayList()
Private myAL2 As New ArrayList() '绑定DataGridViewComboBoxColumn
'Load事件中
Dim Col As DataGridViewComboBoxColumn = CreateComboBoxColumn()
myAL2 = myAL.Clone
Col.DataSource = myAL2
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
myAL2.RemoveAt(0)
End Sub
Private myAL2 As New ArrayList() '绑定DataGridViewComboBoxColumn
'Load事件中
Dim Col As DataGridViewComboBoxColumn = CreateComboBoxColumn()
myAL2 = myAL.Clone
Col.DataSource = myAL2
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
myAL2.RemoveAt(0)
End Sub
当Load事件中myAL2 = myAL 时(此时Button2_Click事件中为myAL.RemoveAt(0) ),这个时候DataGridViewComboBox中的数据会随myALRemove的发生而Remove掉
如果代码换成myAL2 = myAL.Clone,即使Button2_Click事件中为myAL2.RemoveAt(0) ,DataGridViewComboBox中的数据仍然不变化。
ArrayList.Clone 方法
创建 ArrayList 的浅表副本。
集合的浅表副本仅复制集合的元素(不论它们是引用类型还是值类型),但不复制引用所引用的对象。新集合中的引用与原始集合中的引用指向相同的对象。
与之相对,集合的深层副本将复制这些元素以及由它们直接或间接引用的所有内容。
制 ArrayList 的时候,使用 ArrayList.Clone() 方法复制出来的新 ArrayList 之中元素的值会随着源 ArrayList 中元素的值发生变化而一起改变。
----------------------------------------------------------------------
业余爱好 无聊时学学 水平很菜 希望各位多多帮助 多多指点