Announcement

Collapse
No announcement yet.

vb.net 2003 combobox

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

  • vb.net 2003 combobox

    Meine combobox enthält Werte (Artikelnummern als Text) einer Abfrage.

    In Access gab es die Möglichkeit mit der Eigenschaft Automatisch ergänzen einen Wert dieser Abfrage schnell zu finden, wie kann ich das in vb.net 2003 realisieren?

    Im moment kann ich nur über das ersten Zeichen suchen. (ComboBoxStyle.DropDownList)

  • #2
    Hallo break,

    schau dir mal die folgenden Links an:

    Autocomplete Combobox
    MultiColumnFlatCombobox

    das sollte dir weiter helfen.

    Ab dem Framework 2.0 gibt es dann dieses Autocomplete direkt im Combobox-Control

    mfg laptel

    Comment


    • #3
      Hallo break,

      meinst du das so, du schreibst die "Artikelnummer" in die Combobox und kannst auch nur über diese dann suchen? Du möchtest aber gerne auch über die Felder z.b. "Preis" des Artikels suchen können in deiner Datenbank. Kannst diesen aber nicht in deiner Combobox anwählen?

      Sollte dies so sein, nimm die Funktionen von laptel oder versuche es mit folgender einfachen Klasse (habe ich nur schnell geschrieben):

      Code:
      Imports System.IO
      
      Public Class Form1
      
          Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      
              Dim arArtikel As New ArrayList
              arArtikel.Add(New Artikel(1, "Buch ABZ", "Buch 1 - 1000"))
              arArtikel.Add(New Artikel(2, "Buch B", "Buch blubb"))
      
              For Each oArtikel As Artikel In arArtikel
                  ComboBox1.Items.Add(oArtikel)
                  ComboBox1.DisplayMember = oArtikel.Artikelnummer.ToString
                  ComboBox1.ValueMember = oArtikel.Artikelnummer.ToString
              Next
      
          End Sub
      
          Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
              Dim pArtikel As Artikel = ComboBox1.SelectedItem
              TextBox1.Text = pArtikel.Artikelnummer.ToString
              TextBox2.Text = pArtikel.Artikelname
              TextBox3.Text = pArtikel.Artikelbezeichnung
          End Sub
      End Class
      
      Public Class Artikel
          Private m_iArtikelnummer As Integer
          Private m_strArtikelname As String
          Private  m_strArtikelbezeichnung As String
      
          Sub New(ByVal iArtikelnummer As Integer, ByVal strArtikelname As String, ByVal strArtikelbezeichnung As String)
              Me.Artikelnummer = iArtikelnummer
              Me.Artikelname = strArtikelname
              Me.Artikelbezeichnung = strArtikelbezeichnung
          End Sub
      
          Public Property Artikelnummer() As Integer
              Get
                  Return m_iArtikelnummer
              End Get
              Set(ByVal value As Integer)
                  m_iArtikelnummer = value
              End Set
          End Property
      
          Public Property Artikelname() As String
              Get
                  Return m_strArtikelname
              End Get
              Set(ByVal value As String)
                  m_strArtikelname = value
              End Set
          End Property
      
          Public Property Artikelbezeichnung() As String
              Get
                  Return m_strArtikelbezeichnung
              End Get
              Set(ByVal value As String)
                  m_strArtikelbezeichnung = value
              End Set
          End Property
      
          Public Overrides Function ToString() As String
              Return Artikelnummer
          End Function
      End Class
      d.h. du erstellst dir deine eigene Klasse mit den enthaltenen Daten deines Datensatzes. Füge einfach die gewünschten Variablen ("m_...") und die Property`s dazu ein, dann kannst du nach Auswahl in der Combobox über die Klasse Artikel alle Eigenschaften abfragen.

      Comment


      • #4
        Combobox

        Hallo chetti und laptel,

        hab das Problem jetzt soweit gelöst.

        Mein Problem ist jetzt noch, wenn ich auf einen ausgewählten Wert(Artikelnummer) klicke wird mir der richtige Wert(Datensatz) den ich dann weiter verarbeite übergeben.

        Wenn ich aber die Artikelnummer in die Combobox vollständig eingebe ohne
        sie auszuwählen, steht zwar im cbo.text die richtige Artikelnummer die ich dann
        zuweisen kann (cbo.selectedValue = cbo.text), bringt mir aber nichts, da diese Zuweisung nicht den entsprechenden Datensatz auswählt!

        cbo.selectetIndex bleibt auf -1 oder auf dem alten wert.

        Danke für euere Hilfe

        Für euch bestimmt kein Problem / Ich bin leider Anfänger

        Comment


        • #5
          Versuch es mal mit SelectedItem oder SelectedText und lass dir davon zur not den Index geben!

          bzw. hast du die Anweisung auch bei dem TextChanged Ereignis der Combobox drin?

          Ich weiss jetzt nicht wie du die Eingabe der Auswahl bestätigst, am einfachsten geht das ganze natürlich mit dem TextChanged Ereignis, dort solltest du folgenden Code einfügen.

          myCombobox.SelectedItem = myCombobox.Text


          nach kurzem probieren habe ich festgestellt das du besser kommst, wenn du es in das "Enter" Ereignis der CB legst.

          Code:
              Private Sub ComboBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Enter
                  ComboBox1.SelectedItem = ComboBox1.Text
              End Sub

          Dirk
          Zuletzt editiert von chetti; 29.07.2008, 18:16.

          Comment


          • #6
            Combobox

            Hallo Cetti,

            hilft mir leider nicht weiter.

            Ich will eigentlich nur, wenn ich eine Artikelnummer vollständig eingebe, dass ich sie nicht noch in der Dropdown-Liste anklicken muss, damit sie ausgewählt(selected) ist!?

            Gruß / break

            Comment


            • #7
              Hallo break,

              so wie du es beschrieben hast, funktioniert dies auch mit dem Beispielcode. Allerdings hast du deinen Combobox "DropDownStyle" auf "DropDownList", somit kann aus dieser Liste nur ausgewählt und nicht eingegeben werden.

              Ändere diesen Style auf "DropDown" und mein Beispielcode wird auch bei dir funktionieren.

              Solltest du die "DropDownList" beibehalten wollen, kannst du auch alternativ eine Textbox als Eingabe verwenden und dann mit diesem Code die Artikelnummer in der "DropDownList" aktivieren.

              Code:
              myCombobox.Text = myTextbox.Text
              Dirk

              Comment

              Working...
              X