C# Combo box als Drop down list mit Text

Murphy9904

Lt. Junior Grade
Registriert
Mai 2007
Beiträge
344
Hi,
Ich hab ein kleines aber für mich räzelhaftes Problem.
und zwar wie die Überschrift sagt schaffe ich es nicht einen Text auf einer ComboBox als "Drop box list" anzeigen zu lassen.
Wenn ich nur "Drop down" anwähle, dann funktioniert es fast so wie ich will aber ich will nicht dass der Benutzer in der Drop Box schreiben kann.

wenn ich bei "Drop box List" Text eingebe löscht der sich aus irgendnem Grund immer gleich wieder raus.

Danke schonmal

Murphy
 
Du musst in den Eigenschaften festlegen, dass es nur ein Dropdown Combo Box ist. Wenn du mit "Visual Editor" dein neues ComboBox hinzufügt, musst du halt an den Eigenschaften bisschen Arbeiten.
 
Ja ich hab hier schon ne Zeitlang geschaut,
und als auswahl gibts nur "Simple" , "DropDown" und "DropDownList" wobei mir das mit der Drop down list am meisten zusagt nur dass eben kein text angezeigt wird..
(und ne entsprechende einstellung hab ich leider dazu auch noch nich gefunden)
 
du musst auch Text zu deinem Box hinzufügen, da es keinen Standardmäßigen Text gibt. Suche Nach Items im Eigenschaftsfenster und dann auf die Auflistung klicken. Eigentlich sollte man Tutorials oder sowas nehmen wenn man gerade damit anfängt.
 
ja, also ich weis nich ob ich das falsch erklährt hab oder mich einfach zu doof anstelle..
ich kann eben in das Eingabefeld "Text" zwar was eingeben aber das verschwindet dann immer wider.
 
comboBox1.Text = "text";

das dürfte ja auch das gleiche sein, bewirkt aber genausowenig
 
so wie ich das verstehe will er ne combobox in der er nicht nur was auswählen kann sondern auch freitext eingeben kann. Von den Winforms kenne ich sowas nicht.

In den DevExpress Komponenten gibt es sowas, nennt sich ComboBoxEdit

edit: aso der nutzer soll nicht schreiben. meiner meinung nach kannst du dann wenn du das verneinst nix angeben, außer du machst ein dummy element als item und selektierst das vor!
 
Hollowman1985 schrieb:
wo wie ich das verstehe will er ne combobox in der er nicht nur was auswählen kann sondern auch freitext eingeben kann. Von den Winforms kenne ich sowas nicht.

genau das will ich eben nicht (das ist das was die normale Drop down box macht - gibts anscheinend doch ;) )

Ich will einfach nur eine Drop box aus der Ich objekte auswählen kann und einen "Standarttext" anzeigt fals noch nichts ausgewählt ist

z.B. "Sprache"
und wenn man draufklickt, dass man dann Sprachen auswählen kann.

is doch eig so simpel..
 
ne, nicht simple, ich verstehe immer noch nicht was du willst!

Willst du:

A. Autovervollständigung?
B. DropDownText, also ComboBox wo du auswahl triffst?
C. Eigenes Text in den ComboBox hineingeben?
 
Tut mir leid wenn ich es so unverständlich erklähre..
also ich hab euch ein Bild gemacht:

oben (wo es leer ist) sollte "Sprache" stehen


so in etwa:

(nur bei dieser Methode kann der Benutzer dann da rumtippen wie er lust hat) und das will ich eben nicht..
 
Zuletzt bearbeitet:
Ich glaub sowas ist nicht vorgesehen.. Dropdown zeigt halt die Optionen und im Feld die aktuell gewählte. "Sprache" ist ja keine der Optionen selbst.
Könntest du nicht "Sprache" drüber schreiben? Oder links daneben?
 
achso okay..
Ja ich könnte es schon drüber schreiben aber schaut ja nich so gut aus..
kann man denn einen Standartwert setzen?



hab hier was gefunden der das gleiche Problem hat:
http://forum.codecall.net/managed-c/550-disable-typing-combobox.html
aber bei mir klappt das nicht..


So leute ich habs:
ich nehm einfach die "Standart ComboBox" und mache auf event "Keydown" e.SuppressKeyPress = true

so in der art:

Code:
        private void comboBox1_KeyDown(object sender, KeyEventArgs e)
        {
            e.SuppressKeyPress = true;
        }
 
Zuletzt bearbeitet:
du könntest auch mit einem Label markieren, dass es deine Sprachauswahl ComboBox ist. Wozu den alles so schwer machen
 
naja ich finde es nicht schön wenn die ganzen Drop Down listen Leer sind..
es funktioniert doch jetzt und schaut nett aus :)

danke trotzdem für deine Hilfe
 
wieso leer! du kannst während der Laufzeit jeden Wert zuweisen. Naja den Index. Es gibt SelectedIndex und SelectedItem. Die beide kannst du setzen oder lesen.
Wenn du aber durch einen DataSource die Elemente Bindest, dann hast du direkt den ersten Element als Auswahl in deinen Box. Ich kann dir vorschlagen das ganze über einen DataSource zu leiten. Damit kannst du nicht nur besser deine Werte setzen, damit kannst du auch den SelectedItem als eine Klasse oder einen komplexen Objekt haben. Dadurch ersparst du dir viel Arbeit, wenn du verkettete Listen hast deren Inhalt komplex ist.


Code:
Class Sprachen
{
    public String Name;

    .... //irgend ein Code zusätzlich
}


private init()
{
    List<Sprachen> liste = new List();
    liste.Add(new Sprachen("DE"));
    liste.Add(new Sprachen("FR"));
    ComboBox.DataSource = liste;
}

am besten sollst du auch ValueMemeber und DisplayMember setzen. ValueMember ist das was du später in ComboBox.SelectedItem hast und DisplayMember ist das Wert was in der Liste optisch angezeigt wird.
 
Zuletzt bearbeitet:
Warum leer? Du kannst sie doch auch einfach auf das erste (oder ein bestimmtes) Item voreinstellen aka
comboBox1.SelectedIndex = 1;
oder so in der Art. ;)

Aber wenn es auch anders geht ist ja auch gut.

[Edit] Zu langsam. ;)
 
cool
Ja so mach ich das (ich schreib einfach als "Auswahlpunkt" Sprache hin)

gut danke!
 
Zurück
Oben