C#计算视觉工作室

时间:2014-10-22 02:14:08

标签: c# visual-studio character calculator sin

关于我正在创建的程序,我有两个问题是计算器(我知道,哇,太棒了)。我试图给它一个Sin按钮,但是任何时候我尝试使用它,它都不允许我使用它

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 个答案:

答案 0 :(得分:1)

问题是在按下sin按钮后,它会添加&#34; Sin(&#34;到输入,然后TryParse失败,因为输入中有字母。此外,你正在调用{ num1上的{1}},这是在按下sin按钮之前输入的数字。

只需注释,Math.Sin以弧度形式返回结果,如果您希望以度为单位,请使用:

Math.Sin

Math.Sin((num2*Math.PI)/180) 是在框中输入的最后一个数字,在&#34; Sin之后(&#34;我已经对此进行了测试,我很快就制作了一个糟糕的计算器。< / p>

现在,关于设计不同的字符,如平方根符号。首先,可以将平方根符号(√)放入按钮,标签等中,方法是将其num2属性(WPF为Text)设置为&#34; \ u221A& #34 ;.像这样:

Content

对于其他符号,请尝试在线搜索,如果找不到,请制作图片并将按钮的背景设置为该图像。

答案 1 :(得分:1)