Как мне использовать элементы управления текстовыми полями в классе VB?

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