📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 计算器
{
public partial class Form1 : Form
{
public Form1()//构造函数
{
InitializeComponent();//调用程序本身的初始化方法
textBox1.Text = "0";//初始化TextBox1的文字
}
public string ConvertString(string value, int fromBase, int toBase)//函数,用来转换各种进制数
{
long intValue = Convert.ToInt64(value, fromBase); //调用程序自带的Convert方法将包含有(fromBase)进制的string类型变量 转换为long类型变量
return Convert.ToString(intValue, toBase);//调用程序自带的Convert方法将(toBase)进制的long类型变量转换为string类型的变量并作为返回值返回
}
private void Form1_Load(object sender, EventArgs e)//当窗体第一次被加载时调用此方法
{
jinzhi = 10;//初始化变量jinzhi为10,
rb10.Checked = true;//初始华rb10.Checked,表示10进制按钮处于选中状态
s1 = "";//初始化字符串变量S1为空值
}
Double p1;//声明一个double类型的变量p1,用于保存临时数据
double jia;//声明一个double类型的变量jia,用于保存加法运算的被加数
double jian;//声明一个double类型的变量jian,用于保存减法运算的被减数
double cheng;//声明一个double类型的变量cheng,用于保存加法运算的被成数
double chu;//声明一个double类型的变量chu,用于保存加法运算的被除数
double deng;//声明一个double类型的变量deng,用于保存运算结束(等号)中数据
double cifang;//声明一个double类型的变量cifang,用于保存幂运算的基数
int fangfa;//声明一个int类型的变量fangfa,用于保存运算类型,在此1为加法运算,2为减法,3为乘法,4为除法,5为幂运算
bool dot;//bool类型的变量,为true时表示有小数点,false则没有
string s1;//声明一个string类型的变量s1,用于保存用户输入字符串,字符串中包含有用户输入的数字信息
int jinzhi;//声明一个int类型的变量jinzhi,用于保存进制信息,当进制等于2时本程序按2进制进行计算,依次类推
private void bn1_Click(object sender, EventArgs e)//按钮"bn1"的点击事件
{
s1 += 1;//接受用户输入的数据1,并保存在字符串变量s1中
textBox1.Text = s1;//将TextBox1的Text属性赋值为s1,使用户能够看到当前输入的数字
}
private void bn2_Click(object sender, EventArgs e)
{
s1 += 2;//同上
textBox1.Text = s1;//同上
}
private void bn3_Click(object sender, EventArgs e)
{
s1 += 3;
textBox1.Text = s1;
}
private void bn4_Click(object sender, EventArgs e)
{
s1 += 4;
textBox1.Text = s1;
}
private void bn5_Click(object sender, EventArgs e)
{
s1 += 5;
textBox1.Text = s1;
}
private void bn6_Click(object sender, EventArgs e)
{
s1 += 6;
textBox1.Text = s1;
}
private void bn7_Click(object sender, EventArgs e)
{
s1 += 7;
textBox1.Text = s1;
}
private void bn8_Click(object sender, EventArgs e)
{
s1 += 8;
textBox1.Text = s1;
}
private void bn9_Click(object sender, EventArgs e)
{
s1 += 9;
textBox1.Text = s1;
}
private void bn0_Click(object sender, EventArgs e)
{
s1 += 0;
textBox1.Text = s1;
}
private void bnD_Click(object sender, EventArgs e)
{
s1 += "D";
textBox1.Text = s1;
}
private void bnF_Click(object sender, EventArgs e)
{
s1 += "F";
textBox1.Text = s1;
}
private void bnE_Click(object sender, EventArgs e)
{
s1 += "E";
textBox1.Text = s1;
}
private void bnC_Click_1(object sender, EventArgs e)
{
s1 += "C";
textBox1.Text = s1;
}
private void bnB_Click(object sender, EventArgs e)
{
s1 += "B";
textBox1.Text = s1;
}
private void bnA_Click(object sender, EventArgs e)
{
s1 += "A";
textBox1.Text = s1;
}
private void bndot_Click(object sender, EventArgs e)
{
s1 += ".";//接受用户输出的小数点信息,将小数点保存在s1中
textBox1.Text = s1.ToString();//将s1中的数据反馈到屏幕上
}
private void bndeng_Click(object sender, EventArgs e)//按钮"bndeng"等号的点击事件
{
string temp = textBox1.Text;//用于保存当前屏幕上的数字信息,保存在新声明的string变量temp中
switch(jinzhi)//判断进制
{
case 2: temp = ConvertString(temp, 2, 10); break;//当此时为2进制时,将包含有2进制信息的string变量转换为10进制,并覆盖保存在temp中,依次类推
case 8: temp = ConvertString(temp, 8, 10); break;
case 10: temp = ConvertString(temp, 10, 10); break;
case 16: temp = ConvertString(temp, 16, 10); break;
}
p1 = Convert.ToDouble(temp);//调用Convert方法将转换后的包含有10进制信息的temp变量转换为double类型并保存在p1中
switch (fangfa)//判断运算类型
{
case 1: {deng = jia + p1; s1 = deng.ToString(); }; break;//当fangfa的值为1时,表示此时为加法运算,将保存在jia变量中的数字和p1相加并赋值给deng变量,调用ToString()方法将变量deng转换为string并保存在s1中
case 2: deng = jian - p1; s1 = deng.ToString(); break;//当fangfa的值为2时,表示此时为减法运算
case 3: deng = cheng * p1; s1 = deng.ToString(); break;//成法运算
case 4: deng = chu / p1; s1 = deng.ToString(); break;//除法运算
case 5: deng = Math.Pow(cifang, p1); s1 = deng.ToString(); break;//幂运算,调用程序自带的Math.Pow()方法,将基数cifang与指数p1进行幂运算,将结果保存在deng和s1变量中
default: ; break;
}
switch (jinzhi)//判断进制
{
case 2: temp = ConvertString(s1, 10, 2); s1 = ConvertString(s1, 10, 2); break;//当进制为2进制时,将包含有10进制信息的temp和s1变量转换为2进制并保存在temp和s1变量中,此时s1变量是为了连续等号运算而存在
case 8: temp = ConvertString(s1, 10, 8); s1 = ConvertString(s1, 10, 8); break;
case 10: temp = ConvertString(s1, 10, 10); s1 = ConvertString(s1, 10, 10); break;
case 16: temp = ConvertString(s1, 10, 16); s1 = ConvertString(s1, 10, 16); break;
}
textBox1.Text = temp.ToString();//将包含有2进制数据的temp变量显示到屏幕上
}
private void bnjia_Click(object sender, EventArgs e)//加法按钮"bnjia"的单击事件
{
string temp="";//声明一个string类型的变量并赋空值,用于保存临时数据
switch (jinzhi)//判断进制
{
case 2://表示当前计算器以2进制运算
{
temp = ConvertString(s1, 2, 10);//将包含有10进制数据的s1变量转换为2进制并保存在temp中
jia = Convert.ToDouble(temp);//将string类型的temp变量转换并保存在double类型的变量jia中
fangfa = 1;//赋值fangfa 为1 ,表示当前运算为加法运算
s1 = "";//清空s1,以便进行连加运算(因为s1存放deng中的值,则连加运算表示为:结果==被加数+结果)
textBox1.Text = "0";//使屏幕显示为0,以便用户输入加数
}; break;
case 8:
{
temp = ConvertString(s1, 8, 10);
jia = Convert.ToDouble(temp);
fangfa = 1;
s1 = "";
textBox1.Text = "0";
}; break;
case 10:
{
temp = ConvertString(s1, 10, 10);
jia = Convert.ToDouble(temp);
fangfa = 1;
s1 = "";
textBox1.Text = "0";
}; break;
case 16:
{
temp = ConvertString(s1, 16, 10);
jia = Convert.ToDouble(temp);
fangfa = 1;
s1 = "";
textBox1.Text = "0";
}; break;
}
}
private void bnjian_Click(object sender, EventArgs e)//减法按钮"bnjian"的单击事件
{
string temp = "";//同上类推
switch (jinzhi)
{
case 2:
{
temp = ConvertString(s1, 2, 10);
jian = Convert.ToDouble(temp);
fangfa = 2;
s1 = "";
textBox1.Text = "0";
}; break;
case 8:
{
temp = ConvertString(s1, 8, 10);
jian = Convert.ToDouble(temp);
fangfa = 2;
s1 = "";
textBox1.Text = "0";
}; break;
case 10:
{
temp = ConvertString(s1, 10, 10);
jian = Convert.ToDouble(s1);
fangfa = 2;
s1 = "";
textBox1.Text = "0";
}; break;
case 16:
{
temp = ConvertString(s1, 16, 10);
jian = Convert.ToDouble(temp);
fangfa = 2;
s1 = "";
textBox1.Text = "0";
}; break;
}
}
private void bncheng_Click(object sender, EventArgs e)//乘法运算的单击事件
{
string temp = "";//同上类推
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -