Vb.net 绑定到字典的组合框数据的生存期

Vb.net 绑定到字典的组合框数据的生存期,vb.net,data-binding,combobox,Vb.net,Data Binding,Combobox,我对.net还是新手。将应用程序从vba传输到SQL server+vb.net。 我有一些组合框,它们在表单加载时根据语言和环境填充数据。组合框的数据在语言类(库dll的一部分)中作为字典(整数、字符串)检索 我打算在language类中的过程中填充combobox,如下所示(MyComboBox继承自forms.combobox,具有一些自定义属性): 不过恐怕不行。 这段代码是加载每个表单时调用的过程的一部分,一旦执行,就会超出范围。 组合框中的绑定数据如何。它们是通过值传输的还是通过引用

我对.net还是新手。将应用程序从vba传输到SQL server+vb.net。 我有一些组合框,它们在表单加载时根据语言和环境填充数据。组合框的数据在语言类(库dll的一部分)中作为字典(整数、字符串)检索 我打算在language类中的过程中填充combobox,如下所示(MyComboBox继承自forms.combobox,具有一些自定义属性):

不过恐怕不行。 这段代码是加载每个表单时调用的过程的一部分,一旦执行,就会超出范围。
组合框中的绑定数据如何。它们是通过值传输的还是通过引用ComboboxData链接的,一旦被调用的过程返回控件,它们就会丢失。如果是这样的话,有没有另一种方法可以用外部类中的一对值和显示成员动态填充组合框。

1。我认为您不必担心-这是托管代码,一旦没有任何引用它,GS将清理所有内容

2.始终首先设置
ValueMember
displaymeber
,否则您的组合框会产生双重效果。首先,它试图找出如何处理绑定源,然后它必须重新配置

3.您可以使用简单的
List

4.在打开表单时,您希望使用
使用End-use
构造,以确保它们消失,并正确释放所有资源


5.“…组合框中的绑定数据…”-不传输。这只是一个界限。您在某处有一个列表,可以将其用作
dima=cbo.DataSource
。如果不处理表单,它可能会在内存中保留一段时间。因此,请注意#4

您在文章中写道“我担心它不会起作用。”-您是否尝试过它并发现了问题,或者您是否担心它可能不起作用?CBO显然是被传递给了一些东西,因为它正在播放。这是为什么,在哪里,我们可以看到它给安德鲁,在以前的测试中,我有以下代码:@Andrew抱歉,我想回答你,但还没有找到如何用code@Plutonix,Ctrl是“for Each Ctrl as control in frm.Controls”中的一个控制变量。要使用它,我使用“如果ctrl的类型为…”则强制转换
Dim cbo As MyComboBox = CType(Ctrl, MyComboBox)
cbo.DataSource = New BindingSource(ComboboxData, Nothing)
cbo.ValueMember = "Key"
cbo.DisplayMember = "Value"
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)