如何将一个值从一个组合框

问题描述:

分配给数组我的代码是:如何将一个值从一个组合框

Dim Dbase() As String = Nothing 

Dbase(0) = Db_ComboBox.Text 

我已宣布Dbase作为阵列和分配NothingDb_ComboBox是一个组合框。

对于赋值语句,我发现了以下错误:“参考‘DBASE’具有‘无’的值

,这是什么错误的原因,我该怎么走从组合框的值并将其保存在数组中?

+0

请注意,对于'vb.net',数组类型被定义为'Dim Dbase As String()'而不是'Dim Dbase()as String'。 – ja72 2013-02-13 19:48:39

+0

@ ja72:实际上,VB.NET支持这两种表示法。 – Neolisk 2013-02-13 20:23:38

+0

“VS2003”允许这种类型的混淆,并在窗体中有默认实例后,我忘记了他们Nerfed VB.NET。当你需要像'Dim Dbase(100)'这样的字符串定义固定数组时,这种表示法才有意义。 – ja72 2013-02-13 23:53:26

让我们看看你的代码:

Dim Dbase() As String = Nothing 

Dbase(0) = Db_ComboBox.Text 

尤其是第一道防线。第一行创建了一个变量,可以指向一个数组,但= Nothing部分明确地告诉它,“此处不要创建真正的数组”。实际上,你有一个指向任何东西的指针。

我来到这里,你真正需要的是一个List集合,可以附加到随着时间的推移:

Dim Dbase As New List(Of String)() 
Dbase.Add(Db_ComboBox.Text) 

Dbase()什么都没有。看看这个例子:

cargoWeights = New Double(10) {} 
atmospherePressures = New Short(2, 2, 4, 10) {} 
inquiriesByYearMonthDay = New Byte(20)()() {} 

这就是你如何声明数组。

更多的例子:http://msdn.microsoft.com/en-us/library/vstudio/wak0wfyt.aspx

您需要更改此设置:

Dim Dbase() As String = Nothing 

这个(声明数组1元):

Dim Dbase(0) As String 

然后该行会的工作:

Dbase(0) = Db_ComboBox.Text 

如果您需要更改阵列大小,则可以根据需要使用Redim or Redim preserve

如果您预计Dbase的内容会经常更改,那么我会根据@ Joel的建议,切换到List(Of String)而不是手动处理数组大小。

+0

感谢Buddy, 错误消失.. – user2069102 2013-02-14 15:48:01

+0

@ user2069102:如果我的回答有帮助,请考虑接受和/或upvoting它。 – Neolisk 2013-02-14 16:18:18