我正在尝试让我的记忆功能在 C# 计算器上运行

I'm trying to get my memory functions to work on a C# calculator

这是我到目前为止的代码,正如您可能看到的那样,我对编码还很陌生,而且这段代码无法正常工作。真的在寻找一些帮助或提示。 如果单击,记忆功能仅显示 0,并且根本不工作。 所有这些功能的其余部分都按计划工作。 编辑:我已经更新了代码。 decimal和double好像有点问题

public partial class Form1 : Form
{
    Double ResultaatWaarde = 0;
    decimal EindResult = 0;
    decimal MemoryStore = 0;
    string FunctieVoltooid = "";
    bool isFunctieVoltooid = false;


    public Form1()
    {
        InitializeComponent();
        TopMost = true;
    }

    // Nummers /. Getalen 
    private void button_click(object sender, EventArgs e)
    {
        if ((textBox_Resultaat.Text == "0") || (isFunctieVoltooid))
            textBox_Resultaat.Clear();

         isFunctieVoltooid = false;

        Button button = (Button)sender;
        if(button.Text == ",")
        {
            if (!textBox_Resultaat.Text.Contains(",")) 
            textBox_Resultaat.Text = textBox_Resultaat.Text + button.Text;
        }
        else
        textBox_Resultaat.Text = textBox_Resultaat.Text + button.Text;
    }

    // Functies
    private void Functie_click(object sender, EventArgs e)
    {

        Button button = (Button)sender;

        if (ResultaatWaarde != 0)
        {

            buttonIS.PerformClick();
            FunctieVoltooid = button.Text;
            HuidigeProcess.Text = ResultaatWaarde + " " + FunctieVoltooid;
            isFunctieVoltooid = true;

        }
        else
        {

            FunctieVoltooid = button.Text;
            ResultaatWaarde = Double.Parse(textBox_Resultaat.Text);
            HuidigeProcess.Text = ResultaatWaarde + " " + FunctieVoltooid;
            isFunctieVoltooid = true;

        }

    }

    //Clear Entries knop
    private void buttonClearEntries_Click(object sender, EventArgs e)
    {

        textBox_Resultaat.Text = "0";

    }

    // Clear Knop
    private void buttonClear_Click(object sender, EventArgs e)
    {
        textBox_Resultaat.Text = "0";
        ResultaatWaarde = 0;
        HuidigeProcess.Text = "";
    }

    // = Knop
    private void buttonIS_Click(object sender, EventArgs e)
    {

        switch(FunctieVoltooid)
        {
            case "+":
                textBox_Resultaat.Text = (ResultaatWaarde + Double.Parse(textBox_Resultaat.Text)).ToString();
                break;

            case "-":
                textBox_Resultaat.Text = (ResultaatWaarde - Double.Parse(textBox_Resultaat.Text)).ToString();
                break;

            case "*":
                textBox_Resultaat.Text = (ResultaatWaarde * Double.Parse(textBox_Resultaat.Text)).ToString();
                break;

            case "/":
                textBox_Resultaat.Text = (ResultaatWaarde / Double.Parse(textBox_Resultaat.Text)).ToString();
                break;
            case "x²":
                textBox_Resultaat.Text = (ResultaatWaarde * ResultaatWaarde).ToString();
                break;
            case " √":
                textBox_Resultaat.Text = (Math.Sqrt(double.Parse(textBox_Resultaat.Text))).ToString();
                break;
            case "1/x":
                textBox_Resultaat.Text = (1 / ResultaatWaarde).ToString();
                break;
            default:
                break;

        }
        ResultaatWaarde = Double.Parse(textBox_Resultaat.Text);
        HuidigeProcess.Text = "";

    }

    // Memory knoppen
    private void memory_Click(object sender, EventArgs e)
    {

        Button gedruktebutton = (Button)sender;
        string ButtonText = gedruktebutton.Text;


        if (ButtonText == "MC")
        {
            //Memory Clear
            MemoryStore = 0;
            return;
        }

        if (ButtonText == "MR")
        {
            //Memory Recall
            txtDisplay.Text = MemoryStore.ToString();
            return;
        }
        if (ButtonText == "MS")
        {
            MemoryStore = Decimal.Parse(txtDisplay.Text);
            return;
        }

        if (ButtonText == "M-")
        {
            // Memory subtract
            MemoryStore = ResultaatWaarde;
            MemoryStore -= EindResult;
            txtDisplay.Text = MemoryStore.ToString();
            return;
        }

        if (ButtonText == "M+")
        {
            // Memory add 

            MemoryStore += EindResult;
            txtDisplay.Text = MemoryStore.ToString();
            return;

        }

    }

    private void textBox_Resultaat_TextChanged(object sender, EventArgs e)
    {

    }
}


}

MemoryStoreEindResult都被声明为局部变量(在函数memory_Click内)。每次按下记忆按钮时都会调用此函数(基于名称),每次按下它们时,首先发生的事情是:

decimal EindResult = 0;
decimal MemoryStore = 0;

所以基本上,虽然您可以根据按钮按下来存储值,但当您下次调用代码时,所有这些都会首先清零。解决此问题的一种方法是将 EindResultMemoryStore 移动到 class 级别(在声明 ResultaatWaarde 的位置下)。这样,只要表单处于活动状态,这些值就会继续存在。