A. Я полностью согласен с aKzenT в отношении присвоения имен вашим элементам управления последовательным и легко узнаваемым образом. Одним из преимуществ наших современных быстрых машин является то, что мы можем использовать описательные имена в нашем коде для переменных и классов. : -)
B. Есть много способов решить вашу проблему. Хотя прохождение всех 63 форм является одной из них, она едва ли является самой эффективной, эффективной или, опять же, ремонтопригодной в будущем.
C. Не уверен, как вы обрабатываете свой логин, поэтому я не уверен, что произойдет после того, как пользователь нажмет OK в вашей форме входа. Вы настроили свою собственную обработку входа в систему или используете встроенную аутентификацию?
грамотный_технолог находится на правильном пути, предлагая наследование. Сделав еще один шаг вперед, вы можете использовать функцию My.Application для хранения вашей глобальной переменной. Перейдите в окно свойств вашего проекта / Приложение / Просмотр событий приложения. Вы увидите следующий файл кода. Добавьте указанный код:
Namespace My
Partial Friend Class MyApplication
'Add THIS code block:
Private _CurrentUserName As String = "Current User"
Public Property CurrentUserName() As String
Get
Return _CurrentUserName
End Get
Set(ByVal value As String)
_CurrentUserName = value
End Set
End Property
End Class
End Namespace
Теперь ваша форма входа может установить переменную приложения следующим образом:
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
My.Application.CurrentUserName = Me.UsernameTextBox.Text
'YOUR LOGIN CODE HERE . . .
Me.Close()
End Sub
Не создавайте класс в модуле My.Application. Использовать проект / добавить / новый класс
Затем создайте НОВЫЙ класс (НЕ внутри модуля My.ApplicationEvents!), Который наследуется от System.Windows.Forms.Label, следующим образом:
Public Class MyUserLabel
Inherits System.Windows.Forms.Label
Public Sub New()
Me.Text = My.Application.CurrentUserName
End Sub
End Class
Вам нужно будет построить проект, прежде чем элемент управления MyUserLabel станет видимым на панели инструментов. После того, как вы создадите, элемент управления будет доступен для вас, чтобы перетащить на ваши формы. Или вы можете использовать Find / REplace с областью действия, установленной на «весь проект». Замените "label2" на "MyUserControl"
Приведенный выше код заставит экземпляры MyUserLabel установить для свойства .Text для каждого экземпляра значение, представленное переменной My.Application.CurrentUser при инициализации (даже в режиме разработки).
Затем замените Label2 на всех ваших формах на MyUserLabel (вы, вероятно, могли бы сделать это с помощью Find и заменить область действия для всего проекта).
Надеюсь, это поможет.
Вот код:
Namespace My
' The following events are availble for MyApplication:
'
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication
'Add THIS code block:
Private _CurrentUserName As String = "Current User"
Public Property CurrentUserName() As String
Get
Return _CurrentUserName
End Get
Set(ByVal value As String)
_CurrentUserName = value
End Set
End Property
Public Class MyUserLabel
Inherits System.Windows.Forms.Label
Public Sub New()
Me.Text = My.Application.CurrentUserName
End Sub
End Class
End Class
Конечное пространство имен