我基本上试图创建一个数组导出选中的项目到word文档。但是我得到了一个错误,说
"对象引用未设置为对象的实例。"
和
"引用的'SelectedMutualFunds'的值为'Nothing'
下面是我的代码:Public Class ExportFunds
Public SelectedMutualFunds() As String
Private Sub ExportFundOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportFundOkButton.Click
Dim i As Integer
Dim array_Counter As Integer
array_Counter = 0
For i = 0 To ExportFundCheckedListBox.Items.Count() - 1
If ExportFundCheckedListBox.GetItemCheckState(i) = CheckState.Checked Then
SelectedMutualFunds(array_Counter) = ExportFundCheckedListBox.Items(i).ToString
array_Counter += 1
End If
Next
Me.Close()
End Sub
有人能帮我解决这个问题吗?
您需要为您的字符串数组提供长度
Public SelectedMutualFunds() As String
到ExportFundOkButton_Click中的以下内容,最好是在for循环之前。
Redim SelectedMutualFunds(ExportFundCheckedListBox.Items.Count() - 1)
您可以将其简化为一行代码,同时修复NullReference异常:
Private Sub ExportFundOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportFundOkButton.Click
SelectedMutualFunds = ExportFundCheckedListBox.Items.Where(Function(i) i.CheckState = CheckState.Checked).Select(Function(i) i.ToString()).ToArray()
Me.Close()
End Sub
或者,稍长但更容易阅读:
Private Sub ExportFundOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportFundOkButton.Click
SelectedMutualFunds = ExportFundCheckedListBox.Items.
Where(Function(i) i.CheckState = CheckState.Checked).
Select(Function(i) i.ToString()).
ToArray()
Me.Close()
End Sub