ComboBox

03/11/2009 - 16:31 von Andrej Golubew | Report spam
Hallo zusammen,

es gibt ein Control namens Combobox, diese Control kann man für
WindowsApplicationen nutzen.

Ich habe immer noch nicht verstanden wie es genau funktiooniert.

Man kann in ComboBox die Items (Typ Object) spechern, wozu sind dann die
SelectedValue und SelectedText da? Wenn man folgendes macht:

ComboBox.Items.Add(„Red“)

Dann sind die SelectedValue und SelectedText gleich. Wie kann man so was in
ComboBox speichern?

1, „Red“
2, „Blue“

Die erste Spalte muss unsichtbar sein und mit SelectedValue abrufbar. Die
zweite Spalte muss sichtbar sein und mit SelectedText abrufbar.(so wie in
ASP.NET DropDownBox)

Ich habe schon versucht so zu machen

cmbServer.Items.Add(new ServerItem(„1“,“Red“);

private class ServerItem
{
public string iID;
public string iName;

public ServerItem(string pID, string pName)
{
iID = pID;
iName = pName;
}

public override string ToString()
{
return iName;
}

public string ID
{
set { iID = value; }
get { return iID; }
}

public string Name
{
set { iName = value; }
get { return iName; }
}

}




Ich weiss leider nicht wie ich danach ein Item auslesen kann und beide Werte
bekommen kann.

Vielen Dan für Ihre Hilfe.
 

Lesen sie die antworten

#1 Frank Dzaebel
03/11/2009 - 19:39 | Warnen spam
Hallo Andrej,

es gibt ein Control namens Combobox, diese Control kann man für
WindowsApplicationen nutzen.
Ich habe immer noch nicht verstanden wie es genau funktiooniert.
Man kann in ComboBox die Items (Typ Object) spechern, wozu sind dann die
SelectedValue und SelectedText da?



Man kann die ComboBox auch einfach mit dem Setzen
der DataSource-Eigenschaft "füllen" kann. SelectedText ist
ja nur der (normal blau unterlegte) markierte Text. Ich habe
Dir mal ein Beispiel erstellt, indem Du die Bedeutungen
wahrscheinlich besser verstehen kannst:

ComboBox combo = new ComboBox();

class Wert
{
public Wert(int zahl, string darstellung, int nochwas)
{
Zahl = zahl;
Darstellung = darstellung;
Nochwas = nochwas;
}
public int Zahl { get; set; }
public string Darstellung { get; set; }
public int Nochwas { get; set; }
}

private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
FülleZeilen(dt);
combo.DisplayMember = "Name";
combo.ValueMember = "Wert";
combo.DataSource = dt;
combo.SelectedIndexChanged += new
EventHandler(combo_SelectedIndexChanged);
combo.SelectedValueChanged += new
EventHandler(combo_SelectedValueChanged);
Controls.Add(combo);
}

/// <summary>Zeichenfolge für Zeilenumbruch</summary>
string NL = Environment.NewLine;

void combo_SelectedValueChanged(object sender, EventArgs e)
{
Wert wert = combo.SelectedValue as Wert;
Anzeige("SelectedValue", wert.Zahl.ToString());
}

void combo_SelectedIndexChanged(object sender, EventArgs e)
{
Anzeige("SelectedIndex", combo.SelectedIndex.ToString());
}

private void Anzeige(string ereignis, string wert)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(ereignis +" geàndert auf: "+ wert);
sb.AppendLine("SelectedIndex: " + combo.SelectedIndex);
sb.AppendLine("SelectedText: " + combo.SelectedText);
MessageBox.Show(sb.ToString());
}

private void FülleZeilen(DataTable tbl)
{
tbl.Rows.Clear(); tbl.Columns.Clear();
tbl.Columns.Add("Name");
tbl.Columns.Add("Wert", typeof(Wert));
tbl.Rows.Add("Erster Name", new Wert(1,"nett", 42));
tbl.Rows.Add("Zweiter Name", new Wert(2, "gross", 54));
tbl.Rows.Add("Dritter Name", new Wert(3, "klein", 12));
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen