Sono un principiante assoluto quando si tratta di C#. Cercando di imparare tramite esempi. Quindi mi sono trovato un bel tutorial per calcolatrice. Tutto va bene fino all'ultimo momento, il codice funziona, ma non richiede input a più cifre come 33
. C'è una dichiarazione bool lì per attivare/disattivare operazioni aritmetiche e istruttore tutorial calcolato, che dovremmo mettere bool = false
prima dell'inserimento del numero/premere il pulsante (in button_Click
).L'istruzione boolea C# genera una strana eccezione per apparentemente non collegata double.parse (stringa)
il suo codice è simile al seguente:
public partial class MainWindow : Window
{
double value = 0;
string operation = "";
bool operation_pressed = false;
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
if ((tb.Text == "0") || (operation_pressed == true))
tb.Clear();
operation_pressed = false;
Button b = (Button)sender;
tb.Text += "\n" + b.Content.ToString();
}
private void operator_Click(object sender, RoutedEventArgs e)
{
Button b = (Button)sender;
operation = b.Content.ToString();
value = double.Parse(tb.Text);
operation_pressed = true;
equation.Content = value + " " + operation;
}
private void result_Click(object sender, RoutedEventArgs e)
{
equation.Content = "";
switch(operation)
{
case "+":
tb.Text = "\n" + (value + double.Parse(tb.Text)).ToString();
break;
case "-":
tb.Text = "\n" + (value - double.Parse(tb.Text)).ToString();
break;
case "*":
tb.Text = "\n" + (value * double.Parse(tb.Text)).ToString();
break;
case "/":
tb.Text = "\n" + (value/double.Parse(tb.Text)).ToString();
break;
default:
break;
}
}
private void CE_Click(object sender, RoutedEventArgs e)
{
tb.Text = "\n 0";
}
private void C_Click(object sender, RoutedEventArgs e)
{
tb.Clear();
equation.Content = "";
value = 0;
}
}
Compila bene. Ma quando cerco di inserire un numero multidigit e seguirlo con un operatore matematico, viene generata un'eccezione per value = double.Parse(tb.Text);
che gli Stati:
When converting string to DateTime, parse the string to take the date before putting each variable into the
DateTime
object.
Sono così confuso in questo momento. Non c'è nemmeno il DateTime
coinvolto! E io sono al 100% positivo, tutto è come nel tutorial. Cosa sta succedendo? :/
Qualsiasi aiuto sarà apprezzato molto!
EDIT
Schermata di errore effettivo:
Quindi si immette il numero multidigit e un operatore matematico in 'tb.text' ?? – Adam
Non ho mai visto un messaggio di eccezione simile prima. Sei sicuro che sia l'errore vero che stai ricevendo? E che in realtà proviene da quella linea? I * altamente dubbio * 'double.Parse()' lo lancia come eccezione. – David
Prova questo double someValue = double.Parse (tb.Text); value = SomeValue; ottieni ancora l'errore nel Parse? La proprietà value è legata a un editor? –