Cómo configurar Un Combox , siempre con los mismos datos, como un control de usuario para ser utilizado en múltiples formas

0

Pregunta

Tengo un ComboBox que yo uso en múltiples WinForms. En lugar de dejar caer un ComboBox en cada WinForm y, a continuación, llenar el ComboBox con datos de una tabla de datos en cada uno de los WinForm, no puedo crear un Control de Usuario (ComboBox) que tiene los datos pobladas ya y acaba de uso UC en mi Winforms?

A continuación es ¿cómo puedo rellenar los datos para cada individuo combobox ahora. (Tengo una clase pública para el sql cosas)

La Variable SQL proviene de una Clase que se llama SQLControl. la Clase tiene todas las de conexión de sql cosas.

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

Mejor respuesta

1

Se puede poner una pequeña 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

Entonces, cuando el primer formulario se carga, obtener los datos en una lista, declaró en un módulo de modo que se puede acceder desde cualquier formulario de la aplicación. Por supuesto, usted puede tener otras cosas en el Módulo.

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

Cualquier otra forma que necesita los datos para llenar un cuadro combinado puede utilizar ExaminerData. Usted solo llame FillExaminerList una vez en el inicio de la aplicación. Sólo hay un único golpe en la base de datos.

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

Esta es una Increíble solución..... Cuestión de hecho, que se puede usar la teoría sobre otros datos que uso en toda la solución. Gracias!
Gary

En otros idiomas

Esta página está en otros idiomas

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