Как я могу сделать общую функцию для загрузки формы в отдельном файле класса n vb.net - PullRequest
0 голосов
/ 09 января 2012

Я хотел бы иметь совместно используемую функцию в отдельном файле класса для адресации формы.но я не знаю, как я могу заставить это работать.если я использую этот код ниже в моей форме, он работает.но я не могу переместить это в файл класса.

     Shared Sub Formlocation()
         Me.StartPosition = FormStartPosition.Manual
         Me.Location = Screen.GetWorkingArea(Me).Location
     End Sub

Ответы [ 2 ]

1 голос
/ 09 января 2012

Вы не можете получить доступ к экземпляру формы "Я" из-за пределов экземпляра класса.

Измените функцию на параметризованный Sub и передайте экземпляр формы при вызове Sub

Shared Sub Formlocation(ByVal frm As Form)
    frm.StartPosition = FormStartPosition.Manual
    frm.Location = Screen.GetWorkingArea(frm).Location
End Sub

Альтернативой может быть Extension-Method (.NET 3.5 и выше)

0 голосов
/ 09 января 2012

Звучит так, как будто вы хотите иметь функциональность, которая является общей для некоторых ваших форм.

Если это так, вы можете рассмотреть возможность создания базового класса, который наследуется от Form,пусть каждая из ваших применимых форм унаследует это, а затем вызовет метод из формы.

Например, вот пример базовой формы:

Public Class MyBaseForm
    Inherits Form

    ' Contains standard sizing logic, but can be overridden by inheritors
    Protected Overridable Sub InitializeFormLocation()
        Me.StartPosition = FormStartPosition.Manual
        Me.Location = Screen.GetWorkingArea(Me).Location
    End Sub

    ' An optional method for initializing the form location that will be automatically implemented for all child forms
    Private Sub MyBaseForm_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Call InitializeFormLocation()
    End Sub
End Class

А вотпример дочерней формы

Public Class MyForm1
    Inherits MyBaseForm

    ' An optional way for the child forms to call the method
    Private Sub DoInitialization()
        Call MyBase.InitializeFormLocation()
    End Sub
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...