Announcement

Collapse
No announcement yet.

Combobox

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Combobox

    Hallo Andreas!<BR>Kannst du mir bitte noch mal helfen!<BR>Ich möchte gerne das meine Combobox bei Programmstart und nach dem Speichern verschiedener Eingaben leer ist.<BR>ich damit nict das die Liste gelöscht ist, dieses erreiche ich ja über: Cobobox1.items.clear<BR>Wie lösche ich denn nur die Anzeige?
    Viele Grüße Tatjana

  • #2
    Hallo,

    dazu wird die Eigenschaft <b>SelectedIndex</b> auf den Wert <b>-1</b> gesetzt:

    <pre>

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' Schritt 1: Combobox-Liste mit Testeinträgen füllen
    Me.ComboBox1.Items.Add("Eintrag 1")
    Me.ComboBox1.Items.Add("Eintrag 2")
    Me.ComboBox1.Items.Add("Eintrag 3")
    ' Schritt 2: Kein Eintrag darf sofort sichtbar sein
    Me.ComboBox1.SelectedIndex = -1
    End Sub

    </pre&gt

    Comment


    • #3
      Hallo Andreas!<BR>danke das du Zeit genommen hast.<BR>Ich habe dein beispiel ausprobiert und wenn ich die Combobox so fülle wie du es <BR>vorschlägst dann funktioniert das auch.<BR>Aber wenn ich das anders mach dann nicht.<BR>Ich mache das so:
      <BR>
      conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=EDV-Projekt.mdb")<BR>cmdAbt = New OleDbCommand("SELECT * FROM Abteilung", conn)<BR>da = New OleDbDataAdapter(cmdAbt)<BR>ds = New DataSet()<BR>da.Fill(ds, "Artliste")<BR>
      Abt = ds.Tables.Item("Artliste")<BR>dvAbt = ds.DefaultViewManager.CreateDataView(Abt)<BR>

      ComboBox3.DataSource = dvAbt<BR>ComboBox3.ValueMember = "Abteilung"<BR>ComboBox3.DisplayMember = "Abteilung"<BR>Wenn ich dann selectedindex auf -1 setze passiert nichts. Wie kann ich das denn dann machen?<BR>Liebe Grüße Tatjan

      Comment


      • #4
        Hallo Tatjana,

        es funktioniert auch mit aktiver Datenbindung, allerdings gelten dort neue Regeln. Das folgende Beispiel demonstriert dies:

        1. Neues VB.NET-Projekt einer Windows-Anwendung <br>
        2. DataGrid, Button und ComboBox auf dem Formular ablegen <br>
        3. Server Explorer: Die Northwind-Tabelle <i>Region</i> via Drag&Drop auf das Formular ziehen <br>
        4. Über den generierten SqlDataAdapter ein typisiertes DataSet anlegen <br>
        5. DataGrid anbinden: <br>
        a) DataSource = DataSet11 <br>
        b) DataMember = Region <br>
        6. ComboBox anbinden: <br>
        a) DataSource = DataSet11 <br>
        b) DisplayMember = Region.RegionDescription<br>
        c) ValueMember = Region.RegionDescription<br>
        7. Load-Ereignis :
        <pre>
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.SqlDataAdapter1.Fill(Me.DataSet11, "Region")
        Me.ComboBox1.SelectedIndex = -1
        End Sub
        </pre>
        8. Programm starten: Combobox zeigt <b>keinen</b> Eintrag an, das DataGrid steht auf dem ersten Datensatz. <br>
        9. Button-Klick nachrüsten:
        <pre>
        Private Sub Button1_Click1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.ComboBox1.SelectedIndex = -1
        End Sub
        </pre>
        10. Programm starten, aus der ComboBox einen Eintrag auswählen und danach den Button anklicken: ComboBox ist wieder leer. <br>
        11. Versuch 10 wiederholen, allerdings vorher im DataGrid den Datensatz auf den zweiten Datensatz wechseln. Ergebnis: Man muss <b>zweimal</b> den Button anklicken, da der erste Klick nur die Position im DataSet auf den Anfang schiebt und erst der zweite Klick die Anzeige leert.

        Fazit: Bei der automatischen Datenbindung zeigt die ComboBox generell den Wert an, der sich aus der aktuellen (impliziten) CurrencyManager-Position ergibt

        Comment

        Working...
        X