Jak Nastavit Combox , vždy bude s stejná data, jako ovládací prvek uživatele, aby být použity na více forem

0

Otázka

Mám ComboBox, že jsem použití na více WinForms. Místo vrácení ComboBox na každé WinForm a pak se plní ComboBox s daty z DataTable na každé jednotlivé WinForm, nemohl jsem se vytvořit Uživatelský Ovládací prvek (komponenta ComboBox), který má data naplněna, a už jen použít UC na můj Winforms?

Níže je, jak jsem se vyplnit údaje pro každé jednotlivé pole se seznamem. (Já mít veřejné třídy pro sql)

Proměnné SQL pochází z Třídy s názvem SQLControl. Třída má všechny sql spojení věci.

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

Nejlepší odpověď

1

Můžete si dát malé 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

Pak, když první forma zatížení, získat data v seznamu deklarován v modulu, takže to může být přístupné z jakéhokoliv formuláře v aplikaci. Samozřejmě můžete mít jiné věci v Modulu.

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

Jakékoli jiné formě, která potřebuje data vyplnit pole se seznamem můžete použít ExaminerData. Pouze volat FillExaminerList jednou na začátku aplikace. Je tam jen jeden hit na databázi.

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 je Úžasné řešení..... Ve skutečnosti, mohu použít teorii na další data používám v rámci celého řešení. Díky!!!
Gary

V jiných jazycích

Tato stránka je v jiných jazycích

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