Bir Combox nasıl kurulur, her zaman aynı verilerle, birden çok formda kullanılacak bir kullanıcı denetimi olarak kullanılır

0

Soru

Birden çok Winform'da kullandığım bir combobox'um var. Her bir Winform'a bir ComboBox bırakmak ve ardından combobox'u her bir Winform'daki bir datatable'dan gelen verilerle doldurmak yerine, verilerin zaten doldurulduğu bir Kullanıcı Denetimi (ComboBox) oluşturamaz mıyım ve bu uc'yi Winform'larımda kullanamaz mıyım?

Aşağıda, her bir combobox için verileri şimdi nasıl doldurduğum açıklanmaktadır. (Sql şeyler için ortak bir sınıfım var)

SQL Değişkeni SQLControl adlı bir Sınıftan gelir. sınıfın tüm sql bağlantı şeyleri var.

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

En iyi cevabı

1

Küçük bir tane koyabilirsiniz 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

Ardından, ilk form yüklendiğinde, verileri bir modülde bildirilen bir listeye alın, böylece uygulamadaki herhangi bir formdan erişilebilir. Elbette Modülde başka şeyler de olabilir.

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

Birleşik giriş kutusunu doldurmak için verilere ihtiyaç duyan başka bir form kullanabilirsiniz ExaminerData. Sadece Ara FillExaminerList başvurunun başında bir kez. Veritabanında tek bir isabet var.

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

Bu harika bir çözüm..... Aslında, teoriyi çözüm boyunca kullandığım diğer veriler üzerinde kullanabilirim. Teşekkürler!
Gary

Diğer dillerde

Bu sayfa diğer dillerde

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