2014-10-22 146 views
-1

我有两个关于我创建的程序的问题,那就是一个计算器(我知道,哇,太神奇了)。我想给它一个仙按钮,但只要我尝试使用它,它不会允许我使用它C#计算视觉工作室

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

/*This is an app that will be used for carrying out claculations 
    entered by the user. I am attemtpting to include keyboard shortcuts 
    also.*/ 
namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     /* ------------Declaration of needed variables to carry out mathematical functions------------ */ 
     string input = string.Empty; 
     string operand1 = string.Empty; 
     string operand2 = string.Empty; 
     char operation; 
     double result = 0.0; 

     /* ------------MainWindow, not altered------------ */ 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     /* ------------Number and number customization buttons------------ */ 
     private void Decimal_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "."; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Zero_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "0"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void One_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "1"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Two_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "2"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Three_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "3"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Four_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "4"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Five_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "5"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Six_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "6"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Seven_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "7"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Eight_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "8"; 
      this.ViewerDisplay.Text += input; 
     } 

     private void Nine_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = ""; 
      input += "9"; 
      this.ViewerDisplay.Text += input; 
     } 

     /* ------------Operation buttons------------*/ 
     private void Minus_Click(object sender, RoutedEventArgs e) 
     { 
      operand1 = input; 
      operation = '-'; 
      input = string.Empty; 
     } 

     private void Plus_Click(object sender, RoutedEventArgs e) 
     { 
      operand1 = input; 
      operation = '+'; 
      input = string.Empty; 
     } 

     private void Divide_Click(object sender, RoutedEventArgs e) 
     { 
      operand1 = input; 
      operation = '/'; 
      input = string.Empty; 
     } 

     private void Multiply_Click(object sender, RoutedEventArgs e) 
     { 
      operand1 = input; 
      operation = '*'; 
      input = string.Empty; 
     } 

     private void Equal_Click(object sender, RoutedEventArgs e) 
     { 
      operand2 = input; 
      double num1, num2; 
      double.TryParse(operand1, out num1); 
      double.TryParse(operand2, out num2); 

      if (operation == '+') 
      { 
       result = num1 + num2; 
       ViewerDisplay.Text = result.ToString(); 
      } 

      if (operation == '-') 
      { 
       result = num1 - num2; 
       ViewerDisplay.Text = result.ToString(); 
      } 

      if (operation == '*') 
      { 
       result = num1 * num2; 
       ViewerDisplay.Text = result.ToString(); 
      } 

      if (operation == '/') 
      { 
       if (num2 != 0) 
       { 
        result = num1/num2; 
        ViewerDisplay.Text = result.ToString(); 
       } 
       else 
       { 
        ViewerDisplay.Text = "Undefined"; 
       } 
      } 

      if (operation == 'S') 
      { 
       result = Math.Sin(num1); 
       ViewerDisplay.Text = result.ToString(); 
      } 
     } 

     private void Clear_Click(object sender, RoutedEventArgs e) 
     { 
      this.ViewerDisplay.Text = "0.0"; 
      input = string.Empty; 
      operand1 = string.Empty; 
      operand2 = string.Empty; 
     } 
     private void Fnc_Click(object sender, RoutedEventArgs e) 
     { 
      this.MainGrid.Visibility = Visibility.Collapsed; 
      this.SecondaryGrid.Visibility = Visibility.Visible; 
     } 

     private void Sin_Click(object sender, RoutedEventArgs e) 
     { 
      operand1 = input; 
      operation = 'S'; 
      input = string.Empty; 
      input = "Sin("; 
     } 

     private void Cos_Click(object sender, RoutedEventArgs e) 
     { 

     } 

     private void Tan_Click(object sender, RoutedEventArgs e) 
     { 

     } 

我也想知道如何设计的按钮不同的字符,如正方形根会徽。

+2

你能更具体,当你说“它不会允许我使用它”?你得到一个异常,它的按钮被禁用,点击事件不会触发? – 2014-10-22 02:45:37

+0

@Rufus L我运行该应用程序并按下Sin按钮,然后输入希望找到正弦的数字,就好像我没有按下sin按钮。 – Connor 2014-10-22 03:03:29

回答

1

问题是在按下sin按钮之后,它将“Sin(”添加到输入中,然后TryParse因为输入中有字母而失败,并且您在num1上调用Math.Sin,这是之前输入的数字你按罪按钮

刚一说明,Math.Sin返回结果的弧度,如果你想在辈分,使用:

Math.Sin((num2*Math.PI)/180) 

num2在框中输入的最后一个号码,之后“罪(“我已经测试了这个,我做了一个蹩脚的计算器,很快就做到了。”

现在,关于设计不同的字符,如平方根符号。首先,通过将它的Text属性(用于WPF的Content)设置为“\ u221A”,可以将平方根符号(√)放入按钮,标签等中。就像这样:

myButton.Content = "\u221A"; //WPF 
myButton.Text = "\u221A"; //WinForms 

对于其他符号,尝试网上搜索,如果你找不到任何,使图片和设置按钮的背景的形象。

+0

那么我在哪里插入你的“Math.Sin((num2Math.PI)/ 180)”代码? – Connor 2014-10-23 02:04:49

+0

@ user3806603你现在拥有它的地方,在'equals'方法中你有'if(operation =='S')'。它应该取代你现有的代码。 – Shadow 2014-10-24 03:22:53