我正在尝试使用从linklabel

时间:2016-01-26 18:31:35

标签: vb.net

我使用lnk.name = ItemCard

创建了一个链接标签

我有一个名为frmItemCard的表单

当您点击链接标签时,我希望它以编程方式打开表单。

我这样做是因为我正在从SQL表中的列表生成链接标签。

我用来打开表单的代码是:

Private Sub lnk_LinkClicked(ByVal sender As System.Object, ByVal e As LinkLabelLinkClickedEventArgs)

    Dim lnk As LinkLabel = CType(sender, LinkLabel)
    Try
        Dim vForm As String
        vForm = "frm" + lnk.Name
        Call showFormDynamically(vForm)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try


End Sub

Public Sub showFormDynamically(frmForm As String)
    Dim obj As Object = Activator.CreateInstance(Type.GetType(frmForm))
    obj.MdiParent = ParentForm
    obj.Dock = DockStyle.Fill
    obj.show()
End Sub

我得到的错误是:值不能为空。参数名称:type

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:2)

问题是,Type.GetType()如果根本无法解析类型,则会返回null

所以你没有类型来创建实例,现在如果你调用Activator.CreateInstance(null)抛出异常,因为该方法不允许传入的参数为null

这完全与VB.NET无关,这就是.NET框架的运作方式。无论如何,请尝试:致电Type.GetType("anything"),它只会返回null

所以我说你的类型名称是错的。您似乎只使用"frmItemCard"之类的内容,但是您需要传递完全合格的内容,可能看起来像"AnyApplication.AnyNamespace.frmItemCard"

有多种方法可以找到您的类型名称。你可以从这里开始: