Comment configurer Un Combox , toujours avec les mêmes données, un contrôle de l'utilisateur pour être utilisé sur de multiples formes

0

La question

J'ai une zone de liste déroulante que j'utilise sur plusieurs WinForms. Au lieu de la suppression d'une zone de liste déroulante sur chaque WinForm et puis le remplissage de la zone de liste déroulante avec des données provenant d'une Table de données sur chaque WinForm, je n'ai pas pu créer un Contrôle Utilisateur (ComboBox) où les données sont déjà remplie et de n'utiliser que les communications UNIFIÉES sur mon Winforms?

Ci-dessous est comment je remplir les données pour chaque zone de liste déroulante maintenant. (J'ai une classe publique pour le sql trucs)

La Variable SQL vient d'une Classe appelée SQLControl. la Classe dispose de toutes les connexion sql choses.

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

La meilleure réponse

1

Vous pouvez mettre un petit 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

Puis, lors de la première forme de charges, d'obtenir les données dans une liste déclarée dans un module de sorte qu'il peut être consulté à partir de n'importe quelle forme dans l'application. Bien sûr, vous pourriez avoir d'autres choses dans le 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

Toute autre forme que les besoins de données pour remplir une zone de liste modifiable peut utiliser ExaminerData. Vous seul appel FillExaminerList une fois au début de l'application. Il n'existe qu'un seul coup sur la base de données.

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

C'est un super solution..... De fait, j'ai peut utiliser la théorie sur d'autres données que j'ai utiliser sur l'ensemble de la solution. Merci!
Gary

Dans d'autres langues

Cette page est dans d'autres langues

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