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 数组,因为在不同的容器中可能有多个具有相同名称的控件。