繁体   English   中英

如何在Windows窗体计算器中的计算器中创建零按钮

[英]how to create a zero button in calculator in windows form calculator

我是学生。 创建零按钮时遇到麻烦。 场景是这样的,我们应该创建一个零按钮,当您运行并单击它时,它不应像这样显示多余的零... 000000000 ...直到您单击零按钮的次数。 我想知道如何创建一个零按钮,当您运行并单击它时,它仅显示一个零(0)。 我们的老师说,没有这样的数字... 00001.111或000.15或0005或以0开头的任何数字。 但是我仍然希望我的“零”按钮能像这样... 100或5000或0.0006以及数字中的各种多个零。 非常感谢!

感谢大家。 这是我的错误解决方案。

private void Form1_Load(object sender, EventArgs e)
    {
    //    oneBtn.Click += new EventHandler(btn_Click);
    //    twoBtn.Click += new EventHandler(btn_Click);
    //    threeBtn.Click += new EventHandler(btn_Click);
    //    fourBtn.Click += new EventHandler(btn_Click);
    //    fiveBtn.Click += new EventHandler(btn_Click);
    //    sixBtn.Click += new EventHandler(btn_Click);
    //    sevenBtn.Click += new EventHandler(btn_Click);
    //    eightBtn.Click += new EventHandler(btn_Click);
    //    nineBtn.Click += new EventHandler(btn_Click);
        zeroBtn.Click += new EventHandler(btn_Click);
    //    pointBtn.Click += new EventHandler(btn_Click);
    }

 void btn_Click(object sender, EventArgs e)
    {
        try
        {
            Button btn = sender as Button;

            switch (btn.Name)
            {
    //            case "oneBtn":
    //                textBox_output.Text += "1";
    //                break;
    //            case "twoBtn":
    //                textBox_output.Text += "2";
    //                break;
    //            case "threeBtn":
    //                textBox_output.Text += "3";
    //                break;
    //            case "fourBtn":
    //                textBox_output.Text += "4";
    //                break;
    //            case "fiveBtn":
    //                textBox_output.Text += "5";
    //                break;
    //            case "sixBtn":
    //                textBox_output.Text += "6";
    //                break;
    //            case "sevenBtn":
    //                textBox_output.Text += "7";
    //                break;
    //            case "eightBtn":
    //                textBox_output.Text += "8";
    //                break;
    //            case "nineBtn":
    //                textBox_output.Text += "9";
    //                break;
                case "zeroBtn":
                    textBox_output.Text += "0";
                    break;
    //            case "pointBtn":
    //                if (!textBox_output.Text.Contains("."))
    //                    textBox_output.Text += ".";
    //                break;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Sorry for the inconvenience, Unexpected error occured. Details:" +
                ex.Message);
        }
    }

这是按键

private void textBox_output_KeyPress(object sender, KeyPressEventArgs e)
    {
        int keycode;
        keycode = e.KeyChar;
        if (keycode >= 48 && keycode <= 57 || keycode == 8 || keycode == 32 || keycode == 46)
        {
            if (keycode == 46)
                ++trackkeypoint;
            if (trackkeypoint > 1)
            {
                if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
                {
                    e.Handled = true;
                    --trackkeypoint;
                }
            }
        }
        else e.Handled = true;
    }

在按钮上单击(零按钮),您应该检查两件事。 首先,如果您使用分隔符“。” 使用string的IndexOf方法。 如果此返回值> 0,则显示为“。” 并应加0。之后,如果您没有“。”。 在else方法中,检查字符串是否没有值,如果为true,则添加零。 如果字符串不为空且不以0开头,则再次添加零。

case "zeroBtn":
if(textBox_output.Text.IndexOf(".") > 0)
{
    textBox_output.Text+="0";
}
else
{
    //edit: thanks for the comment
    if(textBox_output.Text.ToString() == "")
    {
         textBox_output.Text+="0";
    }
    else if(!textBox_output.Text.StartWith("0"))
    {
        textBox_output.Text+="0";
    }
    else
    {
        //do nothing
    }
}

希望这可以帮助。

关于使用键时的编辑:当键码== 48(我认为这是0的代码)时,应该进行相同的检查。

我假设您正在使用winforms,但是您需要为零按钮添加额外的处理,如下所示

//If textbox starts doesn't start with 0 or Textbox
//contains a decimal point then it is ok to add a zero
if(!textBox_output.Text.StartsWith("0") || textBox_output.Text.Contains("."))
    textBox_output.Text += "0";

您还可以为文本框为空时添加额外的错误处理以允许添加零,以及对其他数字进行其他处理以将现有的零替换为数字

if(textBox_output.Text.Length <= 1)
    textBox_output.Text = "1";
else
    textBox_output.Text += "1";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM