笔者初学C#第二天,之前接触过VBA及C,C++,均为很水的水平。感觉学习一门语言还是要在了解基本概念以后,直接搭建项目会比较有成就感,也比较有趣。按照前辈们的方法制作了一个计算器,并稍稍加了点女生特有的小心思,现将制作过程详细给出,希望能帮到和我一样的初学者。不过因为初学,水平有限(审美水平更有限),所以制作的很粗糙,不当之处请大家指正。
我使用的是VS2010,首先打开软件,在如图所示位置点击“新建项目”
在随后弹出的界面中,在窗口左侧选择语言为“C#”,中间的界面选择类型为“Windows窗体应用程序”,如下图所示
接下来可以看到出现的界面了。其中中间的灰色窗口Form1,就是我们制作计算器的主要战场啦。此时可以看到在窗口右侧有“工具箱”,这是我们进行窗口编辑的工具所在。
如果没有也不要方,单击编辑栏中的“视图”,在下拉菜单中就可以找到“工具箱”的字样,单击“工具箱”,可以看到窗口右侧出现了一个下拉列表,其中的“Button”及“TextBox”就是我们做计算器的外观所用的主要工具。
首先单击“Button”,再将鼠标移到灰色窗体上(以下用Form1)单击,可以看到窗体上出现了一个按钮,按钮就像Word中的图片一样可以任意调整尺寸和位置。
我们需要在窗体上添加20个按钮,注意添加一排以后可以用鼠标圈选上,用Ctrl+C复制,再用Ctrl+V粘贴,也可以圈选上整体调节位置。效果如下
接下来按照上图所示,点击窗口右边的TextBox,放置到窗体中一个,用来显示按键值及计算结果。同样可以调节它的大小及位置。
我们继续,下面更改按钮的显示的数字。首先右键单击左下的那个按钮,在弹出的下拉菜单中选择“属性”,可以看到在窗口右侧出现了一个名为“属性”的菜单栏。其中的”Text”的值就为按钮显示的值。
我们将其改为“0”。可以看到窗体中的按钮也变为了“0”。
我们再接再厉,将剩下的按钮都改为相应的数字或计算符号。最后成品如下
怎么样,是不是有计算器的样子了呢?
我们接下来为计算器添加代码。需要说明的是在C#中,对每一次操作都命名为“事件”,比如我们点击按钮等,都叫做“事件”,我们先双击“0”按钮,在弹出的代码界面中可以看到,红框内就是我们在单击“0”键时会发生的事件定义,我们相对于“0”键的代码也应该填写在里面。
接下来我们先为窗体添加需要使用的变量。要知道C#是面向对象的语言,我们的窗体是一个大的操作对象,我们在窗体里面添加的按钮等,是大窗体里面一个个小的操作对象。因此我们在窗体中定义的变量,按钮等事件也可以引用。红框中即为窗体的定义。
添加需要使用的变量
接下来我们为“0”按钮按下的事件添加代码,需要注意的是我们需要判定在按下0时,0是不是作为除数,0是不能作为除数的。
接下来为按钮“1”添加代码
请读者依照“1”的样式,对剩下的数字按钮添加代码,稍后会给出完整的代码
接下来我们对计算符号按钮进行代码添加,首先是“+”
上图同时给出了“-”的代码,请自己尝试添加“*”,“/”,“log”,“ln”,“开方”(sqrt),“平方”(x2)按钮的代码。
接下来是“C”键的代码,“C”只是清零。将TextBox的内容清空即可。
然后对“=”进行添加,须知在按下“=”按钮时,系统才开始进行运算。
至此,我们的计算器部分就完成啦~下面是详细代码。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace thecaculator
{
public partial class Form1 : Form
{
double a = 0; //记录计算结果
double b = 0; //记录第一个操作数
bool c = false; //当按下"+","-","*","/"等计算符号时将C置为true,
//因为按下计算符号后,再按数字时,应当将原有数字清零。
string d; //记录计算符号
public Form1()
{
InitializeComponent();
}
private void button20_Click(object sender, EventArgs e)
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text += "0";
if (d == "/") //之前按下/号
{
textBox1.Clear(); //清空文本框
//下面弹出警告,请自己尝试下
MessageBox.Show("除数不能为零", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void button15_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "1";
}
private void button14_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "2";
}
private void button13_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "3";
}
private void button10_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "4";
}
private void button9_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "5";
}
private void button8_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "6";
}
private void button1_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "7";
}
private void button2_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "8";
}
private void button3_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "9";
}
private void button4_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "+";
}
private void button7_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "-";
}
private void button12_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "*";
}
private void button17_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "/";
}
private void button5_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "x2";
}
private void button6_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "sqrt";
}
private void button11_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "log";
}
private void button16_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "ln";
}
private void button18_Click(object sender, EventArgs e)
{
switch (d)
{
case "+": a = b + double.Parse(textBox1.Text); break;
case "-": a = b - double.Parse(textBox1.Text); break;
case "*": a = b * double.Parse(textBox1.Text); break;
case "/": a = b / double.Parse(textBox1.Text); break;
case "x2": a = b * double.Parse(textBox1.Text); break;
case "sqrt": a = Math.Sqrt(b ); break;
case "log": a = Math.Log(double.Parse(textBox1.Text),b ); break;
case "ln": a = Math.Log(b, Math.E); break;
}
textBox1.Text = a + "";
c = true;
}
private void button19_Click(object sender, EventArgs e)
{
textBox1.Text ="";
}
}
}
计算器部分基本上全部借鉴于一个前辈的经验分享,以下为原文章链接,如有侵权,请联系我删除
http://www.th7.cn/Program/net/201311/158591.shtml
接下来要在计算器上做一点小手脚啦,也是恶意卖萌的部分,这部分会在接下来(2)部分给出。