vb.net #class #oop #controls
#vb.net #класс #ооп #элементы управления
Вопрос:
Я пытаюсь создать EmployeeID в классе ’employee’, используя метод. Но идентификатор должен иметь возможность извлекать букву из текстового поля ‘firstname’ в основной форме дизайна, а затем использовать ее для создания уникального идентификатора. Но я не могу вызывать / использовать какие-либо элементы управления формами ни в одном из классов, поскольку они работают только в основной форме. Как мне передать элементы управления классу, чтобы я мог делать это внутри метода класса ’employee’ вместо основной формы?
Я надеюсь, что это имеет смысл.
Комментарии:
1. Нет, идентификатору не нужно ничего извлекать из текстовых полей. Вы должны предоставить ему содержимое текстового поля, передав указанное содержимое в качестве аргумента этому методу.
2. Вы с большей вероятностью получите ответ, если предоставите некоторый код. Отредактируйте свой вопрос, чтобы включить класс и метод в форму, которая вызывает метод this Id .
3. Я предполагаю, что информация об этом сотруднике будет сохранена в базе данных. Почему вы не позволяете базе данных предоставлять идентификатор в поле автоматического номера (поле идентификации).
Ответ №1:
Я согласен, что это неправильный подход к этому. Однако можно получить доступ к элементам управления формы из класса. Вы можете сделать это либо путем доступа к открытым формам (при условии, что они открыты), либо путем передачи текстового поля в качестве аргумента.
Форма:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim EmployeeA As New ClassEmployee
Dim EmployeeAID = EmployeeA.GetEmployeeIDFromOpenForm()
MsgBox("Open Form: " amp; EmployeeAID)
MsgBox("Passing Control: " amp; EmployeeA.GetEmployeeIDFromControl(TxtFirstName))
End Sub
Класс:
Public Class ClassEmployee
Public Function GetEmployeeIDFromOpenForm()
Dim FirstNameText = Application.OpenForms.Item("Form1").Controls.Find("TxtFirstName", True).SingleOrDefault().Text
Return FirstNameText
End Function
Public Function GetEmployeeIDFromControl(FirstNameTextBox As TextBox)
Return FirstNameTextBox.Text
End Function
End Class