Tabcontrol und Combobox

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Maffi.

    Tabcontrol und Combobox

    Hallo,
    ich habe ein (Verständnis-)Problem:
    Form mit einem TabControl und zwei TabPages. Auf jeder Page eine datengebundene Combobox (Datasource ist ein Dataset). Vorbelegt werden die Comboboxen in der Form_load sub jeweils mit combobox_n.text = "Bitte auswählen" .
    Das Problem: In TabPage1 zweigt die Combobox wie gewünscht den Text "Bitte auswählen" an. Die Combobox auf TabPage2 zeigt jedoch nicht den Text sondern immer den ersten Datensatz aus der gebundenen Datasource an ?(
    An den Comboboxen kann es nicht liegen, da wenn ich die Combo von TabPage2 nach TabPage1 verschiebe, diese wie gewünscht den Text "Bitte auswählen" anzeigt.

    Wo liegt die Ursache, was muss ich ändern???

    Grüße Ptbberlin
    @ptbberlin Worin unterscheiden sich denn die ComboBoxen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Irgendwas stimmt da nicht. Wenn eine ComboBox an eine DataTable gebunden ist, werden deren Daten angezeigt. Ein selbstgeschriebener Text kann da nicht angezeigt werden. Wenn Du es aber doch hinbekommen hast, zeig mal bitte, wie Du das gemacht hast.

    ##########

    Moment. Habe ein Designdenkfehler gehabt. Ist es richtig, dass ComboBox1 den Stil auf DropDown hat, während ComboBox2 DropDownList ist, also dass man bei CB1 selber Text reinschreiben könnte, während CB2 nur eine Werteselektion anbietet?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @RodFromGermany Die Comboboxen unterscheiden sich nur durch ihre Position und den Daten (unterschiedliche Tabellen einer DB, gleiches DataSet).
    @VaporiZed Der Stil beider Comboboxen ist gleich: DropDown. Ein selbstgeschriebener Text einer Combobox wird (jedenfalls bei mir) angezeigt, wenn er mit ComboboxXYZ.Text = "MeinText" vorbelegt wird. Der Inhalt der DataSource wird erst dann angezeigt, wenn die Combobox geöffnet wird. So habe ich es jedenfalls schon in mehreren Testanwendungen gemacht (funktioniert ja auch hier auf TabPage1).
    Stell bitte sicher, dass die Textzuordnung definitiv in der 2. ComboBox ankommt. Standardmäßig wird der 1. Datensatz angezeigt. Aber wenn Du - wie Du selbst beschrieben hast - den ComboBox-Text selber festlegst, wird dieser auch angezeigt. So bei mir zumindest.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @ptbberlin

    VB.NET-Quellcode

    1. ComboBox1.DataSource = New String() {"1", "2", "3", "4", "5", "6"}
    2. ComboBox1.Text = "MeinText"
    3. ComboBox2.DataSource = New Integer() {1, 2, 3, 4, 5, 6}
    4. ComboBox2.Text = "MeinText"
    funktioniert nur dann, wenn der DropDown-Style mit DropDown vorbelegt ist.

    VB.NET-Quellcode

    1. ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
    2. ComboBox2.DropDownStyle = ComboBoxStyle.DropDown
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @ptbberlin So was:

    VB.NET-Quellcode

    1. Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
    2. If TabControl1.SelectedIndex = 0 Then
    3. ComboBox1.Text = "please select"
    4. ElseIf TabControl1.SelectedIndex = 1 Then
    5. ComboBox2.Text = "please select"
    6. End If
    7. End Sub
    Wenn das nur beinm ersten al auftreten soll, musst Du dafür noch ein Flag einrichten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das ist ein TabControl-Initialisierungsbug/-phänomen. Wenn Du im Form-Load-EventHandler die TabPages wechselst, funktioniert es auch beim 1. Mal., also

    VB.NET-Quellcode

    1. TabControl1.SelectedIndex = 1
    2. TabControl1.SelectedIndex = 0
    3. ComboBox1.Text = "bitte wählen"
    4. ComboBox2.Text = "bitte auch hier wählen"

    Ohne diesen TabPage-Wechsel geht es tatsächlich nicht. Hab ich anfänglich schlecht getestet.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.