[C#] ComboBox DropDown

WolfBauer

Erfahrenes Mitglied
Moin,
ich habe ein komischen Fehler bei Werte zuweisen.

Ich habe eine ComboBox. Weise ich bspw. per Button ComboBox.Text einen Wert zu wird dieser auch korrekt dargestellt und die Box aktualisiert.

Nun möchte ich das ganze dynamisch machen. Ich erzeuge ComboBoxen. Mit
Code:
Control[] result = null;
result = Controls.Find("Name", false);
Hole ich mir die ComboBoxen. Mit ((GSComboBox)result[j]).Text weise ich der Box nun einen Wert zu. Allerdings ändert sich dieser nicht. Er bleibt stur auf dem Wert der vorher eingestellt ist.

Das Problem tritt nur bei Dynamisch erzeugten Boxen auf. Irgendwer eine Idee? Vielleicht eine falsche Referenz oder sowas?

Gruß
 
Kenne GSComboBox nicht aber bei der Standard Combobox von .Net gibt es die Eigenschaft DropDownStyle über das man das verhalten der Texteigenschaft steuern kann. Eventuell gibts da ja auch so was.
 
Ups. :D Das ist nur eine Eigene ComboBox die von der normalen abgeleitet ist. Das Problem hat nichts mit dem DropDown-Sytle zu tun.

Das Problem liegt darin, dass die dynamisch erstellte Combobox nicht gerefreshed wird bei der gleichen Aktion.
 
Aso
Bei google gibts aber irgendwo ne GSCombobox zu downloaden.
Wollt mir nur nicht die demo extra runterladen :D

Du könntest ja die Eigenschaft Text überschreiben und Refresh oder Invalidate dort im set selbst aufrufen.
 
Aber ich frage mich warum es nicht so geht, wie ich es versuche.
Ich weiße ja eigentlich nur:
combox.Text = "blabla";
zu.

Ich habe herausgefunden das dieses Fehlverhalten auch nicht immer auftritt. Ich werde nochmal ein wenig debuggen und wieder berichten.
 
Zuletzt bearbeitet:
Hi. So ich denke irgendwie ist bei den dynamisch erzeugten ComboBoxen etwas falsch.

Bei der ComboBox aus dem Designer kann ich beim debuggen der "Text" Eigenschaft jeden beliebigen Wert zuweisen. Bei den dynamisch erzeugten geht dies nicht. Hier kann ich nur die Werte zuweisen welche in den Items bzw. Display/Value-Membern stehen.

Habe ich irgendeine Eigenschaft vergessen, die dies unterbindet?

Ich hoffe das Problem ist klar. :D

Code:
string value = "ja";
comboBox1.ValueMember = "0,1";
comboBox1.DisplayMember = "nein,ja";
comboBox1.Items.Clear();
comboBox1.Items.AddRange(new StringVector(comboBox1.DisplayMember.Substring(0, comboBox1.DisplayMember.Length)).ToArray());
comboBox1.Text = value;
      
      Console.WriteLine(gsComboBox1);
      DataField data = new DataField();
      Control[] result = fieldPanel.Controls.Find("Test", true);
      if (result != null) {
        for (int j = 0; j < result.Length; j++) {
          if (result[j] is ComboBox) {
            ((ComboBox)result[j]).Text = value;
          }
        }
      }
 
Zuletzt bearbeitet:
Zurück