In HTML kann man den Einträgen in einer Combobox ja ganz einfach einen x-beliebigen Value-Wert zuweisen. Unter C# geht das ja nicht ganz so einfach, aber ich habe mir trotzdem zu helfen gewusst.
Dies funktioniert im Grundprinzip auch, nur gibt es ein Problem wenn ich das ganze mit einen Eventhändler verbinde. Ich habe halt die eine Combobox zur Auswahl und eine Textbox wo man selbst einen Wert eingeben kann, diese beiden werden dann addiert zb.
Nun habe ich das so eingestellt, dass das Ergebnis jedesmal berechnet wird wenn das Enter oder Leave Event ausgelöst wird. Das funktioniert auch.
Als nächster Schritt war dann, dass das Ergebnis auch neu berechnet wird, wenn man zb. in der Combobox nur einen Wert ändert. Denn da würde ja logischerweise weder Enter noch Leave ausgelöst. Habe es dann mit Select und/oder Text-changed probiert. Bei der Textbox geht das auch einwandfrei, doch bei der Combobox geht das nicht. Da meckert der mit einmal folgendes: "Die Eingabezeichenfolge hat das falsche Format.", an der Zeile "double zahlx = Convert.ToDouble(cbZahl.Text);".
Wieso geht es bei Enter und Leave ohne Probleme und bei Select und Text-changed nicht? Die Eingabezeichenfolge ändert sich ja bei allen 4 Varianten nicht.
Dies funktioniert im Grundprinzip auch, nur gibt es ein Problem wenn ich das ganze mit einen Eventhändler verbinde. Ich habe halt die eine Combobox zur Auswahl und eine Textbox wo man selbst einen Wert eingeben kann, diese beiden werden dann addiert zb.
Nun habe ich das so eingestellt, dass das Ergebnis jedesmal berechnet wird wenn das Enter oder Leave Event ausgelöst wird. Das funktioniert auch.
Als nächster Schritt war dann, dass das Ergebnis auch neu berechnet wird, wenn man zb. in der Combobox nur einen Wert ändert. Denn da würde ja logischerweise weder Enter noch Leave ausgelöst. Habe es dann mit Select und/oder Text-changed probiert. Bei der Textbox geht das auch einwandfrei, doch bei der Combobox geht das nicht. Da meckert der mit einmal folgendes: "Die Eingabezeichenfolge hat das falsche Format.", an der Zeile "double zahlx = Convert.ToDouble(cbZahl.Text);".
Wieso geht es bei Enter und Leave ohne Probleme und bei Select und Text-changed nicht? Die Eingabezeichenfolge ändert sich ja bei allen 4 Varianten nicht.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
cntry.Add(new Countries("Max", "2"));
cntry.Add(new Countries("Muster", "3"));
cntry.Add(new Countries("Moritz", "1"));
cbName.DataSource = lst_cntry;
cbName.DisplayMember = "Name";
cbZahl.DataSource = lst_cntry;
cbZahl.DisplayMember = "Zahl";
cbName.SelectedItem = 0;
}
public List<Countries> cntry = new List<Countries>();
private void cbName_SelectedValueChanged(object sender, EventArgs e)
{
if (cbZahl.SelectedItem != cbName.SelectedItem)
{
cbZahl.SelectedItem = cbName.SelectedItem;
}
}
private void cbZahl_SelectedValueChanged(object sender, EventArgs e)
{
if (cbName.SelectedItem != cbZahl.SelectedItem)
cbName.SelectedItem = cbZahl.SelectedItem;
}
public class Countries
{
public string Name { get; set; }
public double Zahl { get; set; }
public Countries(string Name, double Zahl)
{
this.Name = Name;
this.Zahl = Zahl;
}
}
private void label1_Click(object sender, EventArgs e)
{
double multi = Convert.ToDouble(Multi.Text);
double zahlx = Convert.ToDouble(cbZahl.Text);
double resulttex = zahlx * multi;
label1.Text = "Ergebnis: " + resulttex.ToString() + " Nüsse";
}
}
Zuletzt bearbeitet: