vb.net,创建引用另一个对象的对象导致项目崩溃
vb.net, Create object that refers to another object crashes project
我不知道为什么这不起作用,这里的其他问题和答案没有让我找到答案。
我有一个带有 2 个列表框的简单项目。一个名为 lList,另一个名为 lListH。
以下作品:
function MyFunction (byval lList as listbox, byval lListH as listbox)
lList.Items.Add("Visible list")
lListH.Items.Add("Hidden List")
end Function
虽然下面是我想使用的,但它不起作用:
function MyFunction (byval lList as listbox)
Dim sControlName = lList.Name & "H"
Debug.Print(sControlName) 'Outputs lListH as expected
Dim lListH As ListBox = CType(Me.Controls(sControlName), ListBox)
lList.Items.Add("Visible list")
lListH.Items.Add("Hidden List") 'error on this line: System.NullReferenceException, 0x80004003
end Function
最可能的解释是 ListBox
不直接在表格上,而是在其他容器中,例如一个Panel
。这意味着它在该容器的 Controls
集合中,而不是在表单的集合中。您还可以调用表单 Controls
集合的 Find
方法来搜索它及其子项。请注意,这将 return 一个 Control
数组,因为在不同的容器中可能有多个具有相同名称的控件。
我不知道为什么这不起作用,这里的其他问题和答案没有让我找到答案。
我有一个带有 2 个列表框的简单项目。一个名为 lList,另一个名为 lListH。
以下作品:
function MyFunction (byval lList as listbox, byval lListH as listbox)
lList.Items.Add("Visible list")
lListH.Items.Add("Hidden List")
end Function
虽然下面是我想使用的,但它不起作用:
function MyFunction (byval lList as listbox)
Dim sControlName = lList.Name & "H"
Debug.Print(sControlName) 'Outputs lListH as expected
Dim lListH As ListBox = CType(Me.Controls(sControlName), ListBox)
lList.Items.Add("Visible list")
lListH.Items.Add("Hidden List") 'error on this line: System.NullReferenceException, 0x80004003
end Function
最可能的解释是 ListBox
不直接在表格上,而是在其他容器中,例如一个Panel
。这意味着它在该容器的 Controls
集合中,而不是在表单的集合中。您还可以调用表单 Controls
集合的 Find
方法来搜索它及其子项。请注意,这将 return 一个 Control
数组,因为在不同的容器中可能有多个具有相同名称的控件。