ComboBox mit Datenanbindung zeigt immer sofort ersten Eintrag an

26/02/2009 - 00:57 von Hartmut Callies | Report spam
Hallo,
ich habe eine ComboBox (DropDownStyle = DropDown) welche durch eine
Datenbankabfrage gefüllt wird:

strSQL = "SELECT ID, Bezeichnung FROM ArtikelStatus ORDER BY
StatusNummer"
objSqlCommand = New SqlCommand(strSQL, clsSDB.GetDataBaseConnection)
objSqlDataReader = objSqlCommand.ExecuteReader

mDT = New DataTable("ArtikelStatus")
mDT.Load(objSqlDataReader)
objSqlDataReader.Close()
BS = New BindingSource : BS.DataSource = mDT

ComboBox1.DisplayMember = "Bezeichnung"
ComboBox1.ValueMember = "Bezeichnung"
ComboBox1.DataSource = BS

Funktioniert bestens, nur der erste Eintrag in der ComboBox wird immer
gleichangezeigt/ist sichtbar.
Ich will es aber so, dass die ComboBox gefüllt wird aber kein Eintrag
sichtbar (entspricht .Text = "").
Hat jemand eine Lösung?

Hartmut
 

Lesen sie die antworten

#1 Peter Götz
26/02/2009 - 09:23 | Warnen spam
Hallo Harmut,

ich habe eine ComboBox (DropDownStyle = DropDown)
welche durch eine Datenbankabfrage gefüllt wird:



... schnipp...

ComboBox1.DisplayMember = "Bezeichnung"
ComboBox1.ValueMember = "Bezeichnung"
ComboBox1.DataSource = BS

Funktioniert bestens, nur der erste Eintrag in der ComboBox
wird immer gleichangezeigt/ist sichtbar.



Das ist normal und gewollt.

Ich will es aber so, dass die ComboBox gefüllt wird
aber kein Eintrag sichtbar (entspricht .Text = "").
Hat jemand eine Lösung?



Wenn das Textfeld der ComboBox leer bleiben soll,
dann musst Du ComboBox.SelectedIndex = -1 setzen.

Kleines Beispiel:

' /// Code in einem leeren Formmodul (Form1)
Public Class Form1
Private WithEvents Combo1 As ComboBox
Private mDT As DataTable

Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load

CreateData()

Combo1 = New ComboBox
With Combo1
.Font = New Font("Arial", 12)
.SetBounds _
(10, 20, _
Me.ClientSize.Width - 20, _
.Height)

.Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right

.DropDownStyle = _
ComboBoxStyle.DropDown

.DisplayMember = _
mDT.Columns(2).ColumnName

.ValueMember = _
mDT.Columns(0).ColumnName

.DataSource = mDT

End With
Me.Controls.Add(Combo1)

' ***!!!*** keinen der in der DropDowListe
' ***!!!*** enthaltenen Eintràge anzeigen.
Combo1.SelectedIndex = -1

End Sub

Private Sub CreateData()
Dim i As Integer
Dim DR As DataRow

mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns.Add("SText", GetType(String))
.Columns.Add("LText", GetType(String))

For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i, True)
DR.Item(2) = MonthName(i, False)
.Rows.Add(DR)
Next
.AcceptChanges()
End With
End Sub

End Class
' \\\ E N T E

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen