[英]Use shared/static Property with Activator.CreateInstance
我正在將.NET 2.0 WinForms應用程序升級到.NET 4.5.2,並且在此代碼塊上收到兩個警告:
Public Sub ShowFormAsMdiChild(ByVal newFormType As Type, _
ByVal mdiParentType As Type, _
Optional ByVal SearchID As String = "",
Optional ByVal curType As SearchType = SearchType.Residential)
If SearchID = "" Then
Dim F As Form
F = CType(Activator.CreateInstance(newFormType), Form)
F.MdiParent = CType(Activator.CreateInstance(mdiParentType), Form).ActiveForm
F.Show()
Else
Dim F As Form
Dim args(1) As Object
args(0) = SearchID
args(1) = curType
F = CType(Activator.CreateInstance(newFormType, args), Form)
F.MdiParent = CType(Activator.CreateInstance(mdiParentType), Form).ActiveForm
F.Show()
End If
End Sub
我在設置F.MdiParent的兩行上收到以下警告:
通過實例訪問共享成員,常量成員,枚舉成員或嵌套類型; 合格表達式將不被評估。
問題在於ActiveForm屬性是共享屬性,並且由於代碼正在創建Form的新實例,因此調用Form的共享屬性會導致警告。
有沒有更好的方法來實施而不發出警告? VB.NET中的首選答案,但是如果您只懂C#,我可以翻譯。
無需創建MDI父類型的新實例,然后將其轉換為Form
。 ActiveForm
是Form
類的共享屬性,因此您應該通過類名而不是實例來訪問它。
F.MdiParent = Form.ActiveForm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.