Как настроить Combox , всегда будет с теми же данными, что и пользовательский элемент управления, который будет использоваться в нескольких формах

0

Вопрос

У меня есть комбинация, которую я использую на нескольких WinForms. Вместо того, чтобы отбрасывать поле со списком в каждой WinForm, а затем заполнять поле со списком данными из таблицы данных в каждой отдельной WinForm, не мог бы я создать пользовательский элемент управления (поле со списком), в котором уже заполнены данные, и просто использовать этот UC в моих Winforms?

Ниже показано, как я сейчас заполняю данные для каждого отдельного выпадающего списка. (У меня есть общедоступный класс для sql-материалов)

Переменная SQL происходит из класса, называемого SQLControl. в классе есть все необходимое для подключения к sql.

Public Sub Fillcombobox()

    sql.AddParam("@ExaminerType", 3)
    sql.ExecQuery("MyStoredProcedure")
    ComboBoxExaminer.ValueMember = "Examiner_ID"
    ComboBoxExaminer.DisplayMember = "Last_Name"
    ComboBoxExaminer.DataSource = sql.DBDT
End Sub

Private Sub MyWinform_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Call Fillcombobox()
End Sub
user-controls vb.net winforms
2021-11-23 20:34:47
1

Лучший ответ

1

Вы можете положить небольшой Class Examiner

Public Class Examiner
    Public Property Examiner_ID As Integer
    Public Property Last_Name As String
    Public Sub New(ID As Integer, lname As String)
        Examiner_ID = ID
        Last_Name = lname
    End Sub
End Class

Затем, когда загрузится первая форма, получите данные в списке, объявленном в модуле, чтобы к ним можно было получить доступ из любой формы приложения. Конечно, у вас могут быть и другие вещи в модуле.

Module Module1
    Public ExaminerData As New List(Of Examiner)
End Module

Private Sub MyWinform_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    FillExaminerList()
    ComboBoxExaminer.ValueMember = "Examiner_ID"
    ComboBoxExaminer.DisplayMember = "Last_Name"
    ComboBoxExaminer.DataSource = ExaminerData
End Sub

Любая другая форма, которой нужны данные для заполнения поля со списком, может использовать ExaminerData. Вы только позвоните FillExaminerList один раз в начале подачи заявки. В базе данных есть только одно попадание.

Private OPConStr As String = "Your connection string."

Private Sub FillExaminerList()
    Dim dt As New DataTable
    Using cn As New SqlConnection(OPConStr),
            cmd As New SqlCommand("MyStoredProcedure", cn)
        cmd.Parameters.Add("@ExaminerType", SqlDbType.Int).Value = 3
        Using reader = cmd.ExecuteReader
            dt.Load(reader)
        End Using
    End Using
    For Each row As DataRow In dt.Rows
        Dim ex As New Examiner(CInt(row("Examiner_ID")), row("Last_Name").ToString)
        ExaminerData.Add(ex)
    Next
End Sub
2021-11-24 00:51:00

Это потрясающее решение..... На самом деле, я могу использовать теорию на других данных, которые я использую во всем решении. Спасибо!
Gary

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................