C# 窗体程序入门 之计算器
之前一直在java的B/S,这次被要求做一个C/S,其中客户端主要是界面和socket通信。因为没有使用过C#和Visual Studio的控件编程,先来个HelloWorld.
我的环境是visual studio 2010,其他版本例如2008,2012 都可以
1.启动vs2010,新建->项目,得到下图:
2. 选择visual c# ->windows->Windows 窗体应用程序
3.选择项目路径(不一定跟我的一样),名称尽量能让自己和别人明白。
4.窗体Form1 就是我们即将要编辑的位置
5.目前只用到button,textbox 控件,所以选择工具箱里的Button并拖到Form1编辑框里,TextBox也一样。
6.按钮布局如下图,顶上是TextBox控件,下面是20个button控件,还有一个链接控件,计划实现加减乘除,平方,开方,log, ln的功能
7.如下图,单击其中一个button按钮,在右下方的属性里找到text并改名,其他的属性暂时不要动,以后可以慢慢改。
8.修改后的Form1编辑框如下图左边所示。
下面就是代码的编写了:
9.双击Form1 窗体后,进入Form1.cs*界面(说白了是刚才窗体的代码编辑框,也是Form1窗体功能实现的界面)
10.下图是初始程序,我们要做的是往里面加代码。
完整代码:
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 jisuangji
{
public partial class Form1 : Form
{
double a = 0;
double b = 0;
bool c = false ;
string d;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button9_Click(object sender, EventArgs e) // button9_Click是对应我的1键,如果单纯复制代码,但是跟我的窗体布局不同,一样会报错
{ // 算法没问题,只要单击相应的键,进入填入相应的算法即可
if ( c ==true )
{
textBox1 .Text ="";
c=false ;
}
textBox1.Text+="1";
}
private void button10_Click(object sender, EventArgs e) // button10_Click是对应我的2键
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text+="2";
}
private void button11_Click(object sender, EventArgs e) //对应我的3键
{
if (c==true )
{
textBox1 .Text ="";
c=false ;
}
textBox1 .Text +="3";
}
private void button5_Click(object sender, EventArgs e) //对应我的4键
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text+="4";
}
private void button6_Click(object sender, EventArgs e) //对应我的5键
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text+="5";
}
private void button7_Click(object sender, EventArgs e) //对应我的6键
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text+="6";
}
private void button1_Click(object sender, EventArgs e) //对应我的7键
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text+="7";
}
private void button2_Click(object sender, EventArgs e) //对应我的8键
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text+="8";
}
private void button3_Click(object sender, EventArgs e) //对应我的9键
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text+="9";
}
private void button13_Click(object sender, EventArgs e) //对应我0的键,增加了除数不能为0的判断
{
if(c==true )
{
textBox1.Text="";
c=false ;
}
textBox1.Text += "0";
if (d == "/")
{
textBox1.Clear();
MessageBox.Show("除数不能为零", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); }
}
private void button4_Click(object sender, EventArgs e) //对应我的+键
{
c = true;
b = double.Parse(textBox1.Text);
d = "+";
}
private void button8_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 button16_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 = "x2";
}
private void button18_Click(object sender, EventArgs e) //对应我的开方键
{
c = true;
b = double.Parse(textBox1.Text);
d = "sqrt";
}
private void button19_Click(object sender, EventArgs e) //对应我的log键
{
c = true;
b = double.Parse(textBox1.Text);
d = "log";
}
private void button20_Click(object sender, EventArgs e) //对应我的ln键
{
c = true;
b = double.Parse(textBox1.Text);
d = "ln";
}
private void button15_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 button14_Click(object sender, EventArgs e) //对应我的c键,实现了清零的功能
{
textBox1.Text = "";
}
/* private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("http://home.cnblogs.com/u/linshuangxi/");
}
*/
//我注释掉是因为这是一个连接到我的博客的地址,首先需要在窗体拖进来一个LinkLabel控件。
// 然后把注释去掉就可用了
}
}
11.点击运行界面,就会出来窗体,偷个懒,我把基本功能效果图和添加属性后的图都放在一起了,如下图:
后言:
1.尽量不要复制代码,自己动手,丰衣足食
2.第一次设计的话,防止出错,保持窗体布局跟我的一样,这样复制代码就不会有问题
3. 刚刚讲到按钮的属性设计,先把基本功能实现,然后可以在属性里设计文字大小,颜色,背景等
属性设计后的效果图:
参考:http://www.th7.cn/Program/net/201311/158591.shtml
C# 窗体程序入门 之计算器的更多相关文章
- 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...
- 微信小程序 | 49,小程序入门集锦系列文章20篇
以下20篇文章,都是关于微信小程序的文章,以入门常见问题为主.如发现谬误,请与笔者联系. [小程序入门集锦]1,微信小程序在哪里打开 [小程序入门集锦]2,小程序商店 [小程序入门集锦]3,微信小程序 ...
- 强力推荐微信小程序之简易计算器,很适合小白程序员
原文链接:https://mp.weixin.qq.com/s/gYF7GjTRpeZNoKPAPI9aXA 1 概述 前几日QQ群里的朋友问我有没有计算器小程序案例,今天我们说下小程序计算器,然后就 ...
- 微信小程序入门-刘志敏-专题视频课程
微信小程序入门-269人已学习 课程介绍 微信小程序入门基础,给入门级程序员好的教程.教程中对小程序的介绍到小程序的基本使用都做了详细的介绍,教程以实用的实现作为案例,如列表下拉刷新.抽 ...
- 天河微信小程序入门《四》:融会贯通,form表单提交数据库
天河在阔别了十几天之后终于又回来了.其实这篇文章里的demo是接着(天河微信小程序入门<三>)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来.放到今天来看,从前台提交数据到数 ...
- 天河微信小程序入门《三》:打通任督二脉,前后台互通
原文链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=505&extra=page%3D1 天河君在申请到https ...
- 天河微信小程序入门:阿里云tomcat免费配置https
天河君在第一时间通过了微信小程序验证,开启了我的微信小程序之旅.因为天河君之前是一名后端狗,对前端不是很了解,所以几乎可以认为是从零开始学做微信小程序.也希望有志在微信小程序方向做点事情的朋友能够和我 ...
- 我的微信小程序入门踩坑之旅
前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...
- 微信小程序入门正确姿势(一)
[未经作者本人同意,请勿以任何形式转载] >>>前言 这是 [认真学编程] 系列的 第4篇 文章(微信小程序入门系列),欢迎点赞分享.写留言,这些都是对我最好的支持. 本系列适合有一 ...
随机推荐
- ICP编程软件配置(烧写KEIL编译后的bin文件)
1. 安装NuMicro_ICP_Programming_Tool_1.29.6425软件 2. 打开软件后选择目标芯片后点击“连接”按钮 3. 添加程序 4. 点击设定按钮进行设定 5. 点击开始 ...
- 【转】C++:MessageBox的常见用法
一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口 ...
- web标准(复习)--8
今天我们开始学习下拉及多级弹出菜单,包含以下内容和知识点: 带下拉子菜单的导航菜单 绝对定位和浮动的区别和运用 css自适应宽度滑动门菜单 一.带下拉子菜单的导航菜单下拉菜单在一些企业网站应用尤为广泛 ...
- 2016年的个人计划-xiangjiejie
过去一年,开发了angularjs的wap项目,appwap社区,忙忙碌碌不停的做各种活动. 职业目标 今年,要多看书,别总是被懒癌缠身. 多学习,过去半年很少看技术文章了吧,养成定期看文章的好习惯, ...
- 利用.htaccess绑定域名到子目录
前提首先得把域名绑定绑定了,比如把dev.ccvita.com解析到211.136.108.190这个IP其次是在网站管理面板里,为网站绑定dev.ccvita.com最后编辑配置.htaccess文 ...
- C语言之链表————(转载)
#include <stdio.h>#include <malloc.h>#define LEN sizeof(struct student) /*-------------- ...
- Qt跨线程信号和槽的连接(默认方式是直连和队列的折中)
Qt支持三种类型的信号-槽连接:1,直接连接,当signal发射时,slot立即调用.此slot在发射signal的那个线程中被执行(不一定是接收对象生存的那个线程)2,队列连接,当控制权回到对象属于 ...
- docker_openwrt
http://wiki.openwrt.org/doc/howto/docker_openwrt_image https://www.baidu.com/s?wd=lxc%20docker&r ...
- BZOJ1106: [POI2007]立方体大作战tet
1106: [POI2007]立方体大作战tet Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 419 Solved: 302[Submit][St ...
- java开源资源
开到一遍不错的java开源整理,摘录一下,后续遇到好的继续更新. 构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置 ...