Modalità di Installazione di Un Combox , sempre con gli stessi dati, come un controllo utente per essere utilizzato in molteplici forme

0

Domanda

Ho una ComboBox che uso di più WinForms. Invece di far cadere una ComboBox su ogni WinForm e quindi riempiendo la ComboBox con i dati da una DataTable su ogni singolo WinForm, non posso creare un Controllo Utente (ComboBox) che ha i dati popolata già e semplicemente di usare la UC sul mio windows form?

Di seguito è come compilare i dati per ogni singolo combobox ora. (Ho una classe pubblica per sql roba)

La Variabile SQL nasce da una Classe chiamata SQLControl. la Classe ha tutte le connessione sql roba.

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

Migliore risposta

1

Si può mettere una piccola 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

Poi, quando la prima forma di carichi, di ottenere i dati in un elenco dichiarata in un modulo così è possibile accedervi da qualsiasi form dell'applicazione. Naturalmente, si può avere altre cose nel Modulo.

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

Qualsiasi altra forma che ha bisogno di dati per riempire una casella combinata è possibile utilizzare ExaminerData. È solo chiamata FillExaminerList una volta all'inizio di applicazione. C'è solo un singolo colpo sul database.

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

Questo è un Fantastico soluzione..... Infatti, posso usare la teoria di dati che io uso in tutta la soluzione. Grazie!
Gary

In altre lingue

Questa pagina è in altre lingue

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