in Visual in Forms mit C# Prozent?

1 Antwort

Wenn du prozent_Click_1 und berechne_Click_1 hintereinander ausführen solltest, würde eine Konversion des Wertes im Textfeld TEingabe scheitern, denn das leerst du in der erstgenannten Methode wieder.

Ansonsten sehe in deinem Code erst einmal keinen Fehler. Problematisch wäre es nur, wenn du 5% zusammenhängend in dein Eingabefeld schreiben würdest. Dieser String ließe sich nicht so direkt zu einer Zahl konvertieren. Du müsstest erst die Zahl herausholen.

string inputWithoutUnit = YourInputField.Text.Replace("%", string.Empty);
double number = Convert.ToDouble(inputWithoutUnit);

Grundsätzlich wäre es im Programm besser, Ausgabelogik und die Kernlogik des Programms voneinander zu trennen. Das heißt, die Berechnung erfolgt in einer eigenen Methode, nur mit Zahlen, ohne dass darin irgendwelche Typecasts stattfinden würden.

Beispiel:

public void CalculateOnClick(object sender, EventArgs e)
{
  double number1 = Convert.ToDouble(Number1Field.Text);
  double number2 = Convert.ToDouble(Number2Field.Text);
  string operator = OperatorField.Text;
  double result = Calculate(number1, number2, operator);
  ResultField.Text = result.ToString();
}

private double Calculate(double number1, double number2, string operator)
{
  double result = 0;

  if (operator == "-")
  {
    result = number1 - number2;
  }
  else if (operator == "*")
  {
    result = number1 * number2;
  }
  // etc. ... 

  return result;
}

Vorteilhaft hierbei ist, dass es erst einmal keinen Mix verschiedener Interessen gibt (in diesem Fall rechnen und ausgeben). Jede Methode konzentriert sich nur auf eine Aufgabe. So könnte Calculate auch anderweitig verwendet werden (z.B. für einen Konsolenrechner). Sie ist nicht direkt daran gekoppelt, Windows Forms-Komponenten bedienen zu müssen.