Es gibt eine Vielzahl sind von Dingen, die hier schief gehen könnten, aber das Grundprinzip ist, dass der Wert, der in IhremistTextfeld ist keine gültige Ganzzahl (daher schlägt die Konvertierung fehl).
Möglicherweise möchten Sie mit der Int16.TryParse()
Methode prüfen, die einen boolean zurück, um anzuzeigen, wenn das Parsen erfolgreich war oder nicht:
int price;
if(Int16.TryParse(lbl_total_price.Text, out price))
{
// If your conversion was successful, then price will be stored here
}
else
{
// Uh oh. It wasn't in the proper format.
}
jedoch ohne mehr über das Format zu wissen, dass Ihr Wert in ist, könnte es schwer zu sagen, was genau falsch ist. Wenn Sie nicht-numerische Werte haben, könnten Sie sich ausdrücklich Ihren Wert vor dem Parsen Abstreifen wie unten über einen Regex.Replace()
Aufruf gesehen:
// Remove all non-numeric data via a Regular Expression
var cleanedPrice = Regex.Replace(lbl_total_price.Text,@"[^\d]","");
total_cost += Convert.ToInt16(cleanedPrice);
Schließlich, wenn Sie mit einem Preis arbeiten und eigentlich nicht haben integer-Daten wie Dezimalstellen, könnten Sie einfach den Wert als Decimal
oder double
Parsen:
total_cost += Convert.ToDecimal(cleanedPrice);
oder
total_cost += Convert.ToDouble(cleanedPrice);
und was ist der Gesamtpreis in der Eingabebox? – wimh
Durch Angabe eines gültigen Wertes in 'lbl_total_price.Text' oder durch Verwendung von' int16.TryParse' –
Die 'Zeichenkette' könnte zu groß/zu klein sein oder ein' $ 'Symbol haben oder Dezimaltrennzeichen oder nicht-numerische Zeichen haben oder falsches Tausendertrennzeichen entsprechend Ihrer aktuellen Kultur ... aber in allen Fällen, überprüfen Sie bitte den 'lbl_total_price.Text' – Ian