Button "ausführen" einsparen?

Okay, hatte nen Fehler drinnen. Habe es nun soweit das er immer neu rechnet wenn der Fokus eine Combo bzw. Textbox verlässt. Ist aber immer noch nicht ganz das was ich mir vorstelle.

Wenn der User jetzt zb. aus der comboBox1 einen Wert auswählt und den Fokus belässt um dann gleich einen anderen Wert zu probieren, funktioniert es logischerweise nicht.

Gibt es dafür auch eine Lösung außer einen Timer der automtisch aller 1 Sek. alles neu berechnet?

EDIT: Man könnte ja auch den Timer an das Event hängen, sobald eine Box (egal ob Combo oder Text) aktiv wird löst es den Timer aus und beim verlassen des Fokus hört auch der Timer auf. Aber kann mir nicht vorstellen das dies die beste Lösung wäre.

Gruß
 
Zuletzt bearbeitet:
Dann nimm doch eins der SelectionChange Events. Welche für dich besser ist, musst du entscheiden.

Noch ein Hinweis: Bitte schau dir die Klassen, die du nutzt, an, was sie an Methoden, Propertys und Events bieten und wofür diese gut sind.
 
Ich muss doch noch mal Fragen, mir ist noch etwas aufgefallen, habe mal ein kleineres Beispiel zusammen gefrickelt dafür ;-)

Ich habe das ja so ein gestellt, das er immer das Ergebnis neu berechnet sobald sich ein Wert in der Combo oder TextBox ändert. Mit der Textbox gibt es auch keine Probleme, sobald ich dort der Wert ändere, wird auch das Ergebnis neu berechnet.

Die Comobox streikt dagegen etwas eigenartig. Habe ich es wie bei der Textbox eingestellt, meckert er folgendes: "Die Eingabezeichenfolge hat das falsche Format."

Stelle ich dagegen so ein, dass das Ergebniss nur neu berechnet wird wenn ich ich die Combo betrete und wieder verlasse geht es. Aber nicht wenn ich wert ändere während die Combobox sch aktiv ist,

Die Eingabezeichenfolge ist aber trotzdem die gleiche ?! Der Fehler gibt mir ein Rätsel auf.

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

lst_cntry.Add(new Countries("Max", "2"));
lst_cntry.Add(new Countries("Muster", "3"));
lst_cntry.Add(new Countries("Moritz", "1"));

cbx_Name.DataSource = lst_cntry;
cbx_Name.DisplayMember = "Name";

cbx_Zahl.DataSource = lst_cntry;
cbx_Zahl.DisplayMember = "Zahl";

cbx_Name.SelectedItem = 0;
}

public List<Countries> lst_cntry = new List<Countries>();

private void cbx_Name_SelectedValueChanged(object sender, EventArgs e)
{
if (cbx_Zahl.SelectedItem != cbx_Name.SelectedItem)
{
cbx_Zahl.SelectedItem = cbx_Name.SelectedItem;
}
}

private void cbx_Zahl_SelectedValueChanged(object sender, EventArgs e)
{
if (cbx_Name.SelectedItem != cbx_Zahl.SelectedItem)
cbx_Name.SelectedItem = cbx_Zahl.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(cbx_Zahl.Text);

double resulttex = zahlx * multi;

label1.Text = "Ergebnis: " + resulttex.ToString() + " Nüsse";
}
}
 
Zuletzt bearbeitet:
Man sollte noch erwähnen an welcher Stelle er meckert:
double zahlx = Convert.ToDouble(cbx_Zahl.Text);
 
Zuletzt bearbeitet:
Ist erstmal nur eine normale Zahl 1 oder 10 etc. also ohne Komma oder Punkt. Jedenfalls ohne eventhändler geht es, wird der eventhändler durch leaver oder enter ausgeführt geht es auch, select oder textchanged geht es nicht. Das verstehe ich nicht, a) es geht alles oder b) nichts von allem dem ...
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück