如何通过字符串从不同的项目/程序集中打开表单?
我在一个解决方案
EX 中有很多项目:
- SalePurchase : 有 : FrmSale, FrmPurchase, FrmMRN, etc…<BR>
- FAS:具有:FrmPayment、FrmReceipt 等……</li>
- 等等……</li>
我想FAS.FrmPayment
从SalePurchase
项目中打开
位于 SalePurchase 的以下功能
Public Shared Function CreateForm(ByVal formName As String) As Form
Return DirectCast(CreateObjectInstance(formName), Form)
End Function
Public Shared Function CreateObjectInstance(ByVal objectName As String) As _
Object
Dim obj As Object : Dim ObjName As String = objectName
Try
If objectName.LastIndexOf(".") = -1 Then
objectName = [Assembly].GetExecutingAssembly.GetName.Name & "." & objectName
End If
obj = [Assembly].GetExecutingAssembly.CreateInstance(objectName)
Catch ex As Exception
obj = Nothing
End Try : Return obj
End Function
我运行SalePurchase
项目
当我通过String=FrmSale
时,它工作正常
Dim FrmOpen As Form : FrmOpen =CreateForm(FrmSale)
FrmOpen.MdiParent = parent : FrmOpen.Show() : FrmOpen.Focus()
‘In this case obj has value {SalePurchase.FrmSale}
当我通过String=FrmPayment
它会引发错误Object Reference not set to an Instance of an object
Dim FrmOpen As Form : FrmOpen =CreateForm(FrmPayment)
FrmOpen.MdiParent = parent : FrmOpen.Show() : FrmOpen.Focus()
‘In this case obj has value Nothing
Dim FrmOpen As New FrmPayment 'use direct object
FrmOpen.MdiParent = parent : FrmOpen.Show() : FrmOpen.Focus()
‘This is work fine
如何FrmPayment
通过传递字符串打开?