Combobox - mit Enter bestätigen



  • Hallo,

    ich möchte gerne, dass ich die Auswahl in der Combobox auf über die Enter-Taste bestätigen kann.

    Beim normalen klicken sieht es so aus:

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                tabelle1 part = comboBox1.SelectedItem as tabelle1;
                if (part != null)
                {...}
    }
    

    Genau das selbe soll nun auch über die Enter-Taste geschehen:

    private void comboBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {...
    // wie muss ich hier SelectedItem auswählen??
    }
    }
    

    Problem ist, wie ich nun wieder die Daten an mein Objekt binde??
    Danke füre Eure Hilfe!



  • Ich habe das "Problem" nun über

    AutoCompleteMode = Suggest
    AutoCompleteSource = ListItem
    

    gelöst.

    Nun würde ich gerne noch die Breite des DropDown anpassen, das sich beim Eintippen öffnet.
    Mit DropDownWidth geht es leider nicht.

    Folgendes habe ich noch versucht, erhalte aber die Fehlermeldung

    int DropDownWidth(ComboBox myCombo)
            {
                int maxWidth = 0;
                int temp = 0;
                Label label1 = new Label();
    
                foreach (var obj in myCombo.Items)
                {
                    label1.Text = obj.ToString();
                    temp = label1.PreferredWidth;
                    if (temp > maxWidth)
                    {
                        maxWidth = temp;
                    }
                }
                label1.Dispose();
                return maxWidth;
            }
    

    InvalidArgument=Value mit dem Wert 0 ist für DropDownWidth ungültig.
    Parametername: DropDownWidth



  • Dann war die ComboBox wohl leer.



  • Die Combobox ist nun nicht mehr leer.
    Beim Durchlauf ist die MaxWidth bei 273 ... angezeigt wird aber weiterhin die Width der Combobox von 240. 😕



  • Weberknecht schrieb:

    Die Combobox ist nun nicht mehr leer.
    Beim Durchlauf ist die MaxWidth bei 273 ... angezeigt wird aber weiterhin die Width der Combobox von 240. 😕

    Du mußt in Eigenschaften der Combobox im Eigenschaftsfeld auf das Ereignis einstellen, sonst reagiert sie nicht darauf. Und die Funktion benennen. Sofern nicht vorhanden, die Funktion händisch einfügen und dann im Eigenschaftsfeld aktualisieren.

    Pascal



  • Hallo,

    nun habe ich AutoCompleteMode auf SuggestAppend geändert.
    Das passt soweit bzw. nun würde auch alles wir gewünscht angezeigt werden (=Eintippen der Nummer und Bestätigung mit Enter), bis auf folgendes:

    Meine Combobox beinhaltet zwei Werte, eine Ident und ein Text.
    z.B.
    1234, Senkschraube M4 x 20
    1235, Dichtung Ø30 / 1

    Beim ersten Eintrag gibt es keine Probleme.
    Wird der zweite Eintrag gewählt, dann wird der Textteil nach dem / abgeschnitten.
    Dies hat zur Folge, dass der Eintrag nicht mehr über Enter selektiert werden kann.

    Wie kann ich es verhindern, dass der Text abgeschnitten wird?
    Danke Euch!!



  • Folgenden Hinweis hab ich gefunden (http://msdn.microsoft.com/de-de/library/system.windows.forms.combobox.autocompletemode%28v=vs.110%29.aspx

    Möglicherweise wird durch das Betriebssystem die Anzahl der benutzerdefinierten Zeichenfolgen begrenzt, die gleichzeitig angezeigt werden können. Für Zeichenfolgen mit einem Schrägstrich (/) bzw. einem umgekehrten Schrägstrich (\) fügt die automatische Vervollständigung alle Zeichen bis einschließlich des Schrägstrichs an.

    Frage ist, gibt es eine Möglichkeit, dass auch die restlichen Zeichen nach dem Schrägstrich angezeigt werden??



  • Hallo,

    die Schrägstriche werden wohl für Pfadangaben verwendet (wo dann das automatische Auffüllen ja auch Sinn macht), aber ob man das Abstellen kann, bezweifle ich mal.
    Könntest du denn die Schrägstriche durch ein anderes Zeichen ersetzen?



  • Könntest du denn die Schrägstriche durch ein anderes Zeichen ersetzen?

    Nein, leider nicht. Der Schrägstrich wird innerhalb von Bezeichnungen verwendet und diese sind fix.


Log in to reply