Como configurar Um Combox , sempre com os mesmos dados, como um controle de usuário a ser usado em várias formas

0

Pergunta

Eu tenho uma caixa de Combinação que eu uso em várias WinForms. Em vez de descartar uma caixa de Combinação em cada WinForm e, em seguida, encher a caixa de Combinação com dados a partir de um DataTable em cada indivíduo WinForm, não poderia criar um Controle de Usuário (caixa de Combinação) que tem os dados preenchidos já e apenas utilizar-se que a UC no meu Winforms?

Abaixo é como eu preencher os dados para cada combinação de agora. (Eu tenho uma classe pública para o sql coisas)

A Variável SQL vem de uma Classe chamada SQLControl. a Classe tem todos conexão sql coisas.

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

Melhor resposta

1

Você pode colocar uma pequena 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

Então, quando o primeiro formulário é carregado, obter os dados em uma lista declarado em um módulo para que possa ser acessado a partir de qualquer formulário no aplicativo. Claro, você pode ter outras coisas no 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

Qualquer outra forma que as necessidades de dados para preencher uma caixa de combinação pode usar ExaminerData. Você só chamar FillExaminerList uma vez no início da aplicação. Há apenas um único golpe no banco de dados.

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 é uma Incrível solução..... Questão de fato, eu posso usar a teoria em outros dados eu uso toda a solução. Obrigado!
Gary

Em outros idiomas

Esta página está em outros idiomas

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