Jak skonfigurować Combox , zawsze będzie z tymi samymi danymi, co i formant niestandardowy, który będzie używany w kilku formach

0

Pytanie

Mam kombinacja, którą używam na kilka WinForms. Zamiast rzucać pole kombi w każdej WinForm, a następnie wypełnić pole z listą danych z tabeli danych w każdej WinForm, nie mógłbym utworzyć formant niestandardowy (pole kombi), w którym już wypełnione dane, i po prostu korzystać z tego UC w moich Winforms?

Poniżej pokazano, jak ja teraz wypełnić dane dla każdego z rozwijanej listy. (Mam publiczny klasa dla programu sql-materiałów)

Zmienna SQL dzieje z klasy, zwanego SQLControl. w klasie jest wszystko, co niezbędne do połączenia z 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

Najlepsza odpowiedź

1

Możesz umieścić mały 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

Następnie, gdy załadowany pierwszy formularz, otrzymasz dane w liście ogłoszonym w module, aby można było uzyskać dostęp z dowolnego formularza aplikacji. Oczywiście, mogą być i inne rzeczy w module.

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

Każda inna forma, której potrzebne dane do wypełnienia pola kombi, może korzystać z ExaminerData. Tylko zadzwoń FillExaminerList raz na początku złożenia wniosku. W bazie danych jest tylko jedno trafienie.

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

To niesamowite rozwiązanie..... W rzeczywistości, mogę wykorzystać teorię na innych danych, które używam we wszystkich decyzji. Dziękuję!
Gary

W innych językach

Ta strona jest w innych językach

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