【问题标题】:How do you create a Listbox on the fly (at runtime) in VB.net?如何在 VB.net 中动态(在运行时)创建列表框?
【发布时间】:2011-02-18 03:03:51
【问题描述】:

我正在尝试在 Visual Basic 2008 中单击按钮时创建一个列表框。我似乎找不到可以执行此操作的代码。 我找到了一些非常相似的例子,并说这会起作用:

Dim lstOutput As ListBox

lstOutput = Me.Controls.Add("VB.Label", "List1")

问题是括号内的两个东西都会产生错误:

对于第一个:

“String”类型的值无法转换为“System.Windows.Forms.Control”。

第二个:

“Public Overridable Sub Add(value As System.Windows.Forms.Control)”的参数过多。

有什么想法吗?

【问题讨论】:

    标签: vb.net winforms listbox


    【解决方案1】:

    这将添加一个空列表框作为页面中的最后一个控件:

    Dim lstOutput As New ListBox With { .Id = "List1" }
    Page.Controls.Add(lstOutput)
    

    【讨论】:

      【解决方案2】:

      你必须像这样使用新的关键字:

      将 lstOutput 调暗为新的列表框 Me.Controls.Add(lstOutput)

      【讨论】:

        【解决方案3】:

        你想要这个:

        Dim lstOutput As New ListBox()
        Me.Controls.Add(lstOutut)
        

        注意添加“New”关键字来实际创建您的控件。

        【讨论】:

          【解决方案4】:

          试试这个

          Dim lstOutput As new ListBox()
          Me.Controls.Add(lstOutput)
          

          【讨论】:

          • 感谢您的快速回答,但仍然会导致以下错误:变量“lstOutput”在被赋值之前被使用。运行时可能会导致空引用异常。
          • 使用 Dim lstOutput 作为新的列表框
          【解决方案5】:

          每次按下按钮(假设代码位于 a 按钮下)时,列表框都会添加到左上角。如果每次您想添加一个新的列表框,它会添加到另一个列表框之上,而您看不到新的列表框怎么办。如何在不指定坐标的情况下动态地将一个列表框添加到另一个列表框旁边?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-25
            • 1970-01-01
            • 1970-01-01
            • 2013-05-06
            • 1970-01-01
            相关资源
            最近更新 更多