Ako nastaviť Combox , vždy bude s rovnakými údajmi, ako používateľ kontroly majú byť použité na viaceré formy

0

Otázka

Mám ComboBox, ktorý môžem použiť na viacerých WinForms. Namiesto klesá ComboBox na každej WinForm a potom vyplnenie ComboBox s údajmi z DataTable na jednotlivých WinForm, nemohol som vytvoriť Užívateľské Ovládanie (ComboBox), ktorý má údajov osídlené už len použitie, ktoré sa UC na mojom Winforms?

Nižšie je, ako som vyplňte údaje pre jednotlivé combobox teraz. (Mám verejného trieda pre sql veci)

Variabilný SQL pochádza z Triedy nazýva SQLControl. Trieda má všetky sql spojenie veci.

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

Najlepšiu odpoveď

1

Môžete dať 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

Potom, keď prvá forma zaťaženie, získať údaje v zozname vyhlásená modul, takže je možné pristupovať z ľubovoľného formulára v aplikácii. Samozrejme, môžete mať aj iné veci v 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

Akejkoľvek inej forme, ktorú potrebuje údaje vyplniť combo box, môžete použiť ExaminerData. Môžete volať iba na FillExaminerList raz na začiatku aplikácie. Je tam len jediný hit na databázu.

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é riešenie..... V skutočnosti, môžem využiť teórie o ďalšie údaje, ktoré som použiť v celom riešenie. Vďaka!
Gary

V iných jazykoch

Táto stránka je v iných jazykoch

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