【发布时间】:2014-11-11 13:59:38
【问题描述】:
我正在将 .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 属性是共享属性,并且由于代码正在创建表单的新实例,因此调用表单的共享属性会导致警告。
有没有更好的方法来实施而不发出警告? VB.NET 中的首选答案,但如果您只知道 C# 中的方法,我可以翻译。
【问题讨论】: