1.1进入Windows的世界

1.1.1回顾控制台应用程序

开始学习Windows程序开发之前,让我们一起重新回顾一下在C#语言学习中经常使用到的控制台应用程序。

控制台应用程序创建以后默认在(1)区域打开的是Program.cs代码文件,而且主函数中没有任何代码。在解决方案资源管理器面板中除了属性和引用之外只有一个Program.cs代码文件。按Ctrl+F5不带调试的运行界面如下图:

1.1.2创建Windows应用程序

接下来,我们新建一个Windows应用程序。

(1)打开vs2005,在菜单中依次选择“文件” – “新建” – “项目…”菜单项

(2)在模板中选择Windows应用程序

Windows应用程序默认创建以后的界面如下图:

按Ctrl+F5不带调试的运行界面如下图:

1.1.3Windows应用程序和控制台应用程序区别

(1)在1区域默认打开的代码文件不同。控制台应用程序默认打开的是Program.cs代码文件,并且直接是代码编辑模式,而Windows应用程序默认打开的

是Form1.cs文件,并且是设计模式。

(2)我们再来看解决方案面板发现和控制台应用程序相比多了个Form1.cs,但是同样有Program.cs文件,那么好,我们打开Program.cs看看和控制台中的Program.cs文件的内容有何不同。

<1>两者都有命名空间的引用部分,但是具体引用的命名空间不同。

<2>对于类Program的定义不同,在Windows中Program被定义为静态类。

<3>主函数的签名及内容不同。Windows程序中主函数上面添加了[STAThread]指示应用程序的默认线程模型是单线程单元,同时在主函数中已经添加了三行代码。第一行代码用于启用应用程序的可视样式,第二行代码用于程序控件的默认设置,第三行代码设置程序启动的窗体实例。在第三行代码中有new Form1() 这个代码相信大家都比较熟悉,其作用是创建Form1的实例对象,那么Form1究竟是什么呢?

我们通过转到定义操作可以看到如图结果:

Form1就是一个类,该类继承自Form,Form是系统中已经定义好的一个类。并且Form1的定义使用的部分类定义,分别在Form1.cs和From1.Designer.cs两个代码文件中。其中From1.Designer.cs中的代码一般是由系统自动生成的。

现在可能大家就开始有些疑问了,既然Form1他就是一个类,和我们之前在C#中定义的类一样,那么为何会有两种查看界面呢,一种是默认创建好Windows项目后打开的Form1.cs的设计界面,一种是代码编写界面(如上图)。

这就是Windows应用程序的特别之处了,从1.1.2中我们知道Windows程序运行以后是有界面的,而Form1就是一个运行以后会有界面的类,那么强大的VS就帮我们增加了一种可视化的设计模式,方便我们可视化的对Form1进行设计。其设计界面和代码编辑模式是对应的,设计界面所做的操作,vs会自动生成相应的代码。

1.2Windows程序设计的一般步骤

  1. 1.2.1界面设计

控件摆放:

(1)打开Form1的设计界面,

(2)把鼠标移到“工具箱”,工具箱会自动展开(或者通过视图菜单也可以打开工具箱面板),双击“公共控件”下的“Button”。这时,在Form1窗体上会出现一个按钮button1

(3)从工具箱中拖“Button”控件放到Form1窗体上,在Form1窗体上会出现一个按钮button2

(4)在工具箱中单击“Button”控件,然后在Form1窗体上的空白位置单击,在Form1窗体上会出现一个按钮button3

步骤(2)(3)(4)是向窗体添加控件的3种方法,其中步骤(3)及拖放的方式是最常用的。

(5)控件添加到窗体上的位置及其大小是可以直接对其进行拖拽修改的。

深层探索:

我们刚刚向Form1窗体添加了3个Button控件,那么对应Form1类的变化时什么呢?在资源管理器中我们双击打开Form1.Designer.cs代码文件。

我们添加的三个Button按钮对应在Form1中增加了3个Button类型的私有字段,并且在上面折叠起来的代码中还有对这三个对象的相关属性设置。

1.2.2代码编写

我们希望程序运行以后单击button1按钮可以出来一个欢迎的消息框。

双击button1按钮进入代码编辑界面,编写如下代码:

using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication11
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){MessageBox.Show("欢迎你!");}}
}
 
运行效果:
 
深层探索:
我们刚刚在设计界面双击button1究竟发生了什么事情呢?现在我们重新打开Form1.Designer.cs代码文件查看Windows窗体设计生成的代码。
 
vs自动帮我们生成了绑定button1的Click事件的相应代码。
 
1.3控件究竟是什么?

在Windows程序设计中,我们总是说控件,那么控件究竟是什么呢?

以Button控件为例,我们通过转到定义操作,显示代码如下:

那么可知,控件其实就是类。

控件是对数据和方法的封装,是可视化交互的载体,其本质就是具有可视界面的类。

转载于:https://www.cnblogs.com/micy/archive/2010/04/30/1725012.html

进入Windows的世界相关推荐

  1. Windows异常世界历险记(五)——VC6中结构化异常处理机制的反汇编分析(下)

    在本系列的上一篇文章Windows异常世界历险记(四)--VC6中结构化异常处理机制的反汇编分析(中)中,给出了针对VC6的异常处理机制进行逆向后得到的伪码.在本文中,我们仍然以之前写的小程序为例,通 ...

  2. 回归Dos操作的快感,进入PowerShell世界

    概述 写下本篇文章源于参加Tech.Ed的一场关于Window PowerShell的课程.虽然之前也经常关注,但从没有亲自体验过.Windows PowerShell 是一种新的命令行外壳和脚本语言 ...

  3. 回归Dos操作的快感,进入PowerShell世界 (转)

    概述 写下本篇文章源于参加Tech.Ed的一场关于Window PowerShell的课程.虽然之前也经常关注,但从没有亲自体验过.Windows PowerShell 是一种新的命令行外壳和脚本语言 ...

  4. Google Chrome 正在走 Windows 的老路

    Google Chrome将成为第二个Windows:人人都在使用,但人人都不喜欢. 作者 | Matt Hanson 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以 ...

  5. Windows 8实例教程系列 - 开篇

    2012年10月26日,微软发布Windows 8操作系统以及自主品牌平板电脑Surface,Windows作为世界上最流行的操作系统,发布一周内,下载量超过400万.毋庸置疑 Windows Sto ...

  6. 实战Windows Azure:微软云计算平台技术详解

    实战Windows Azure:微软云计算平台技术详解  徐子岩 编著 ISBN978-7-121-14547-6   2011年10月出版 定价:69.00 元 16开 440页 宣传语:什么是真正 ...

  7. BUILD大会感想:Windows 8 启动开发者新纪元(首发-程序员10月刊)

    9月13日-16日在加州阿纳海姆会议中心,来自世界各地的超过5000名开发者齐聚一堂,不时为BUILD大会上Windows 8新特性的主题演讲发出阵阵掌声.这个传统上微软为其开发者举办的名为Profe ...

  8. Windows远程桌面连接的入门宝典

    在Windows的世界中不论你是普通的桌面用户,还是企业级的用户,都有一项功能,那就是远程桌面连接.不论是在WINDOWS 2000 SERVER,WINDOWS XP.WINDOWS 2003.WI ...

  9. 一分钟,让你的 Windows 学会 OS X 的「一指禅」:Seer

    Windows 心想:还好这个姿势简单易学. 我能在键盘上找到的最有安全感的按键一定是「空格键」.作为一个在键盘上最为宽大的按键,不给它多安排一点合适的任务是说不过去的. 在 OS X 的 Finde ...

最新文章

  1. git push VS git fetch
  2. [干货]我如何考察面试者的机器学习水平
  3. 解决工控网络通信协议威胁的实践
  4. oracle阻塞查询,oracle 查询阻塞的sql语句
  5. UVA-10954 Add All
  6. 机器学习入门系列四(关键词:BP神经网络)
  7. 12月7日学习内容整理:ORM单表操作
  8. 抗击肺炎:新冠肺炎疫情数据可视化及疫情预测分析
  9. [Matlab] 符号积分求对流扩散方程在给定初始条件下的一维解
  10. Apache Ant 简介和配置
  11. matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
  12. python基础3之文件操作、字符编码解码、函数介绍
  13. Error - ORA-26028
  14. Windows核心编程_PE文件格式详细介绍
  15. Java测试用例简介
  16. html坦克大战js代码包,js实现坦克大战游戏
  17. 关于ESAPI获取资源文件问题
  18. ps如何调出参考线?
  19. MT6761处理器介绍
  20. 辅材先生之打开传统向互联网+辅材这把锁

热门文章

  1. 《智慧书》格言211-220
  2. DCD DSR DTR RTS CTS表示什么意思
  3. 2008年5月小记(??, #, DataContractJsonSerializer, CTE Ranking top)
  4. cambridge official online course store
  5. 三个免费图片网站:特别适合场景图
  6. building a software for what?
  7. what you want from a relationship?
  8. ARMV7,ARMV8
  9. 《F4+2》—团队项目系统设计改进与详细设计
  10. 在ubuntu16.04.1配置qemu-img,qemu-nbd