Использовать общее / статическое свойство с Activator.CreateInstance

1

Я обновляю приложение.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 является общим свойством и потому что код создает новый экземпляр формы, вызвав свойство shared shared, вызывает предупреждение.

Есть ли лучший способ реализовать без предупреждения? Предпочтительный ответ в VB.NET, но я могу перевести, если вы только знаете, как в С#.

Теги:
winforms

1 ответ

0
Лучший ответ

Нет необходимости создавать новый экземпляр родительского типа MDI, а затем передавать его в Form. ActiveForm является общим свойством класса Form, поэтому вы должны получить к нему доступ через имя класса, а не через экземпляр.

F.MdiParent = Form.ActiveForm

Ещё вопросы

Сообщество Overcoder
Наверх
Меню