我仍然是.net的新人。将应用程序从vba传输到SQL Server + vb.net。 我有一些组合框,在表单加载时填充每种语言和环境的数据。组合框的数据在语言类(库dll的一部分)中作为字典(Integer,String)检索 我打算在语言类的一个过程中填充组合框(MyComboBox继承自forms.combobox并带有一些自定义属性):
Dim cbo As MyComboBox = CType(Ctrl, MyComboBox)
cbo.DataSource = New BindingSource(ComboboxData, Nothing)
cbo.ValueMember = "Key"
cbo.DisplayMember = "Value"
我担心它会起作用。 此代码是加载每个表单时调用的过程的一部分,一旦执行超出范围。 组合框中的绑定数据怎么样?它们是按值传输还是链接通过引用ComboboxData并在被调用的过程返回控制后丢失。如果是这样,还有另一种方法可以使用外部类中的一对值和显示成员动态填充组合框。
答案 0 :(得分:1)
1.我认为您不必担心 - 这是托管代码,一旦没有任何引用它,GS将清理所有内容。
2.首先设置Date
和ValueMember
,或者你的组合框可以完成双重工作。首先,它试图找出如何处理绑定源,然后它必须重新配置。
3.您可以使用简单的DisplayMemeber
List<T>
4.打开表单时要使用Public class CboItem
Public Property Id As Integer
Public Property Name As String
Public Property Description As String
End Class
Dim listOfItems As New List(Of CboItem)()
' load your list
cbo.ValueMember = "Id"
cbo.DisplayMember = "Name"
cbo.DataSource = listOfItems
cbo.SelectedIndex = 2 ' get third item
MessageBox.Show(DirectCast(cbo.SelectedItem, CboItem).Description)
构造,以确保它们消失并且所有资源都正确释放
5. “...在组合框中绑定数据...” - 它不会被传输。这只是 - 绑定。您有某个列表,可以将其用作Using-End Using
。如果你不处理你的表格,它可能会在记忆中存在一段时间。因此,请注意#4