带记忆按钮的C#计算器

时间:2013-12-06 02:31:39

标签: c# memory calculator

我在使计算器具有存储值的能力方面遇到了一些困难。计算器适用于除此之外的所有事情,我很困惑。我想我可能要声明一些常量或者我现在想念的东西。我是超级新人并感谢他们的帮助。这是我的代码。谢谢你的帮助。现在我没有错误,但也没有任何作用!我也应该这样做,所以当存储在内存中的值时,文本框中会出现“M”,但我认为从这部分开始更容易。

private void digitCalculate_Click(object sender, EventArgs e)
    {

        Button ButtonThatWasPushed = (Button)sender;
        string ButtonText = ButtonThatWasPushed.Text;
        decimal EndResult = 0;
        decimal MemoryStore = 0;

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

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

        if (ButtonText == "MS")
        {
            // Memory subtract
            MemoryStore -= EndResult;
            return;
        }

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

            MemoryStore += EndResult;
            return;

        }

    }

2 个答案:

答案 0 :(得分:2)

您需要拥有decimal MemoryStore = 0;的表单级变量,因为您有功能级变量,当您点击0按钮

时,它将初始化为digitCalculate
    decimal MemoryStore = 0;
    decimal EndResult = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void digitCalculate_Click(object sender, EventArgs e)
    {

        Button ButtonThatWasPushed = (Button)sender;
        string ButtonText = ButtonThatWasPushed.Text;
        //decimal EndResult = 0;
        //decimal MemoryStore = 0;

还要注意

  • MC =内存清除将内存设置为0
  • MR = Memory Recall使用 记忆中的数字
  • MS = Memory Store将数字显示在内存中

您需要更改"MS"逻辑并添加"M-"

    if (ButtonText == "MS")
    {
        MemoryStore = Decimal.Parse(txtDisplay.Text);
        return;
    }

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

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

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

    }

答案 1 :(得分:0)

只需将MemoryStore变量更改为全局变量即可。目前,每次按下按钮时都会重新声明它,这意味着按钮按下之间数据会丢失。将它移到函数之外,它应该可以正常工作。