所以我刚刚做了一个由按钮和文本框(TbxSum)组成的基本计算器。
我遇到的问题是,如果输入了无效的和,我希望我的catch块取起它(确实如此),并将文本框中的内容替换为计算器中的最新结果(它没有)。
所以我说:
3+3=6
现在,我的计算器将把6放在文本框中,用于下一次和。
所以说我做了:
6/3
计算器拾取的内容无效,但我希望文本框值从前面的和返回到6。
这就是我尝试过的:
var myButton = (Button)sender;
        if (myButton.Content.ToString() == "=")
        {
            DataTable dt = new DataTable();
            string s = tbxSum.Text;
            string result = "";
            if (s.Contains("("))
            {
                s = s.Replace("(", "*(");
            }
            try
            {
                var v = dt.Compute(s, "");
                tbkSum.Text = s + "=" + v.ToString();
                tbxSum.Text = v.ToString();
            }
            catch
            {   
                MessageBox.Show("Invalid Sum");
                tbxSum.Text = result;
            }
        }我还有一个文本块(TbkSum),它显示了前面的和,所以我想,也许我可以把所有的东西都放在等号的右边,但是我不知道怎么做。
发布于 2016-05-19 11:13:07
可以将旧值存储在try块之外的变量解密中,并在catch块中再次使用该变量:
string oldSumValue = tbxSum.Text;
try
{
    // your code          
}
catch
{
    tbxSum.Text = oldSumValue ;
    MessageBox.Show("Invalid Sum");       
}https://stackoverflow.com/questions/37321465
复制相似问题