如何在windows窗体计算器中的计算器中创建零按钮
本文关键字:计算器 创建 按钮 windows 窗体 | 更新日期: 2023-09-27 18:19:29
我是一名学生。我在创建零按钮时遇到问题。场景是这样的,我们应该创建一个零按钮,当你运行并点击它时,它不应该像这样显示多余的零。。。000000000。。。直到你点击零点按钮的次数。我想知道如何创建Zero按钮,当你运行并单击它时,它只显示一个Zero(0)。我们的老师说没有这样的数字。。。00001.111或000.05或0005,或任何以大量零开头的东西。但我仍然希望我的Zero按钮能像这样工作。。。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;
}
在按钮点击(零按钮)中,您应该检查两件事。首先,如果您有分隔符"。"这是用字符串的IndexOf方法完成的。如果此返回>0,则您有".",并且应该添加0。之后,如果在else方法中没有".",请检查字符串是否没有值,如果为true,则添加零。如果字符串不为空并且不是以0开头,则再次添加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
}
}
希望这能有所帮助。
关于使用密钥时的编辑:当keycode==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";