模仿windows操作系统附件中的计算器样式进行设计,要设计基本的菜单项(快捷键、热键、和分割线等)
功能要求:实现如下图所示的功能键
设置热键方法如下:
先用窗体项目做出如图窗体
右击下拉菜单项
点击编辑项设置热键
点击DropdownItems集合
在这里设置热键,以此类推;
全部设置完毕后如图
然后点击计算器窗体
初始化显示文本框为空;为0~9以及小数点添加操作数监听,
为操作符添加操作符监听以及删除、退格、清空分别添加监听器;
全部代码如下:
<span style="font-family:Comic Sans MS;font-size:14px;">using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//保存用户所按的运算符
private string s;
//保存用户输入的运算数
private double x, y;
//运算符按钮对象
private Button btn;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "";
}
private void buttond_Click(object sender, EventArgs e)
{
btn = (Button)sender;
textBox1.Text += btn.Text;
}
private void buttonop_Click(object sender, EventArgs e)
{
btn = (Button)sender;
if(btn.Name!="btn_Equal")
{
x = Convert.ToDouble(textBox1.Text);
textBox1.Text = "";
s = btn.Name;
switch (s)
{
case "btn_Recip":
textBox1.Text = "1/" + x.ToString() + "=" + (1/x).ToString();
break;
case "btn_Sqrt":
textBox1.Text = "√" + x.ToString() + "=" + Math.Sqrt(x).ToString();
break;
}
}
else
{
y = Convert.ToDouble(textBox1.Text);
switch(s)
{
case"btn_Add":
textBox1.Text = x.ToString()+"+"+y.ToString()+"="+(x + y).ToString();
break;
case "btn_Sub":
textBox1.Text = x.ToString() + "-" + y.ToString() + "=" + (x - y).ToString();
break;
case "btn_Mul":
textBox1.Text = x.ToString() + "*" + y.ToString() + "=" + (x * y).ToString();
break;
case "btn_Div":
if (y == 0)
{
MessageBox.Show("除零错误!!!", "信息提示", MessageBoxButtons.OK);
}
else
textBox1.Text = x.ToString() + "/" + y.ToString() + "=" + (x / y).ToString();
break;
case "btn_Mod":
textBox1.Text = x.ToString() + "%" + y.ToString() + "=" + (x % y).ToString();
break;
}
}
}
private void changeSign(object sender, EventArgs e)
{
double storNum;
if (textBox1.Text.Length > 0)
{
storNum = double.Parse(textBox1.Text);
storNum *= -1;
textBox1.Text = storNum.ToString();
}
btn_Equal.Select();
}
private void btnDeleteSign_Clicked(object sender, EventArgs e)
{
}
private void btnDeleteAll_Clicked(object sender, EventArgs e)
{
textBox1.Text = "";
}
private void btnDelete1_Clicked(object sender, EventArgs e)
{
this.textBox1.Text = this.textBox1.Text.Substring(0, this.textBox1.Text.Length - 1);
if(this.textBox1.Text=="")
{
this.textBox1.Text = "";
}
}
}
}</span>
最后执行结果如下: