簡體   English   中英

使用“ Enter”鍵時計算器應用崩潰

[英]Calculator App Crash when using “Enter” Key

我正在嘗試編寫圖形計算器,到目前為止該計算器可以運行,但是我想使用“ Enter”鍵來執行該操作並給出答案。 現在,只要按Enter它就會崩潰。 這是XAML代碼:

<TextBox Height="38" TextWrapping="Wrap" VerticalAlignment="Top"
 Margin="16,23,0,0" HorizontalAlignment="Left" Width="226" 
 FontSize="20" Background="Black" BorderThickness="2" Name="tb"
 Text="" KeyUp="KeyDownHandler">

這是處理Enter鍵事件的代碼。

private void KeyDownHandler(object sender, KeyRoutedEventArgs e)
{
     if (e.Key == Windows.System.VirtualKey.Enter)
     {
          result();
     }
}     

private void result()
{
     String op;
     int iOp = 0;
     if (tb.Text.Contains("+"))
     {
         iOp = tb.Text.IndexOf("+");
     }
     else if (tb.Text.Contains("-"))
     {
         iOp = tb.Text.IndexOf("-");
     }
     else if (tb.Text.Contains("*"))
     {
         iOp = tb.Text.IndexOf("*");
     }
     else if (tb.Text.Contains("/"))
     {
         iOp = tb.Text.IndexOf("/");
     }
     else
     {
         //error
     }

     op = tb.Text.Substring(iOp, 1);
     double num1 = Convert.ToDouble(tb.Text.Substring(0, iOp));
     double num2 = Convert.ToDouble(tb.Text.Substring(iOp + 1, tb.Text.Length - iOp - 2));

     if (op == "+")
     {
         tb.Text = Convert.ToString(num1 + num2);
     }
     else if (op == "-")
     {
         tb.Text = Convert.ToString(num1 - num2);
     }
     else if (op == "*")
     {
         tb.Text = Convert.ToString(num1 * num2);
     }
     else if (op == "/")
     {
         tb.Text = Convert.ToString(num1 / num2);
     }
}

我是C#,XAML和Visual Studio的初學者。 這是處理Enter.key事件的正確方法嗎?

這是引發的異常:

引發異常:mscorlib.ni.dll中的“ System.FormatException”

更改此:

double num2 = Convert.ToDouble(tb.Text.Substring(iOp + 1, tb.Text.Length - iOp - 2));

對此:

double num2 = Convert.ToDouble(tb.Text.Substring(iOp + 1, tb.Text.Length - iOp - 1));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM