簡體   English   中英

C#WPF計算器

[英]C# wpf calculator

我正在制作計算器,但是嘗試使用十進制數進行計算時出現異常。 所有sum1 += double.Parse(numEnt.Text); 但是我現在有點迷路了:P

    public partial class MainWindow : Window
{
    double sum1 = 0;
    double sum2 = 0;
    string dotSign = "";
    bool plusButtonClicked = false;
    bool subButtonClicked = false;
    bool multButtonClicked = false;
    bool divButtonClicked = false;


    public MainWindow()
    {
        InitializeComponent();
    }

    private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
    {
        Regex regex = new Regex("[^0-9]+");
        e.Handled = regex.IsMatch(e.Text);
    }

    private void one_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += one.Content;
    }

    private void two_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += two.Content;
    }

    private void three_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += three.Content;
    }

    private void four_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += four.Content;
    }

    private void five_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += five.Content;
    }

    private void six_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += six.Content;
    }

    private void seven_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += seven.Content;
    }

    private void eight_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += eight.Content;
    }

    private void nine_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += nine.Content;
    }

    private void zero_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += zero.Content;
    }

    private void add_Click(object sender, RoutedEventArgs e)
    {

        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = true;
        subButtonClicked = false;
        multButtonClicked = false;
        divButtonClicked = false;
    }

    private void sub_Click(object sender, RoutedEventArgs e)
    {
        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = false;
        subButtonClicked = true;
        multButtonClicked = false;
        divButtonClicked = false;
    }

    private void mult_Click(object sender, RoutedEventArgs e)
    {
        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = false;
        subButtonClicked = false;
        multButtonClicked = true;
        divButtonClicked = false;
    }

    private void div_Click(object sender, RoutedEventArgs e)
    {
        sum1 = Convert.ToDouble(dotSign);
        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = false;
        subButtonClicked = false;
        multButtonClicked = false;
        divButtonClicked = true;
    }

    public void deci_Click(object sender, RoutedEventArgs e)
    {
        double currentInput = numEnt.Text.Length;
        bool pointFound = false;

        /*for (int i = 0; i < currentInput.Length; i++)
        {
            if (currentInput[i] == '.')
                pointFound = true;

        }*/

        if (pointFound == false)
            numEnt.Text += ".";

    }

    private void equal_Click(object sender, RoutedEventArgs e)
    {
        if (plusButtonClicked == true)
        {
            sum2 = sum1 + double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }

        if (subButtonClicked == true)
        {
            sum2 = sum1 - double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }

        if (multButtonClicked == true)
        {
            sum2 = sum1 * double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }

        if (divButtonClicked == true)
        {
            sum2 = sum1 / double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }

        numEnt.Clear();
    }

    private void clear_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Clear();
        calculations.Clear();
        result.Clear();
    }

    private void change_Click(object sender, RoutedEventArgs e)
    {
        double signchange = numEnt.Text.Length;
        signchange = -signchange;
        numEnt.Text = signchange.ToString();
    }




  }
}

double.Parse(字符串)

double.Parse(string)僅存在三種可能的異常,並且由於似乎您沒有使用其參數,因此您將獲得FormatException。 您在談論十進制數字,所以我想這全都歸結為您使用的十進制和組分隔符。 默認情況下,我認為您可以使用“。” 作為小數點分隔符,“,”或“”作為一組。

您應該考慮使用double.Parse(string,NumberStyle)來更精確地定義要在計算器中使用的分隔符。

暫無
暫無

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

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