我们上一期只是在windows窗体上放了三个控件,并编写了一段小程序,实现了触发窗体上的按钮,使得标签上的内容改变,并能够结束运行当中的程序:

然而,我们在编写代码窗口时,windows窗体自动嵌入了这样一段程序:

public partial class Form1 : Form

{

//程序段

}

我们先引入一个概念,就是部分类的概念,这里面Form1就是部分类,它是一个子类,而partial是用来对类进行分割,partial是keyword modifier(关键修饰词),那么什么是部分类呢?

部分类就是将一个类存放于不同文件,只要位于相同的命名空间即可。它相当于我们将一个大的文件进行分部进行压缩,压缩后会变成几部分,而当我们使用时可以将这些部分放到一个文件夹下进行解压缩之后就可以使用了,而这里面的文件夹相当于部分类的命名空间。

我们在解决方案资源管理器中可以看到form1.cs所产生的文件,这里面有三个文件,它分分别是form1.designer.cs、form1.resx(定义资源文件)和form1(存入form1类下的成员):

当我们双击form1.designer.cs时,则它会以选项卡的方式打开程序代码编辑区:

下面就是以选项卡的形式打开的代码编辑区:

可以看到,第一行代码使用的是相同的命名空间,而在form1类最前面加入了partial关键字:

找到initializecomponent()方法,该方法是form1类定义的构造函数所调用的方法,而我们在windows窗体上对每一个控件进行属性的设置都呈现在这里,如我们上一期将按钮的name和text属性进行了相应的设置:

一般控制台应用程序都从main()主程序开始切入,那么Windows窗体的程序从哪开始切入呢?

我们在解决方案资源管理器solution explorer中来查看program.cs文件,打开后可以发现下面这段程序代码:

而这里面的main()主程序下调用了application静态类的方法,来执行windows窗体应用程序,其实application类下的EnableVisualStyles()函数所实现的功能是提供可视化效果,而它下面的run()函数则是实现窗体的运行。

那么,用户与windows程序界面如何进行交互呢?

当然是通过事件驱动event driven来产生事件event,而这些事件包含单击或者双击和移动鼠标等,然而,我们对事件进行触发大部分用的是鼠标的click事件。

通过控件都有它默认的事件处理程序,当我们在窗体上进行双击时则进入窗体的加载事件form1_load(),双击按钮控件则进入button1_click()事件,不同的控件可使用这种方法来进入到代码编辑区域。

Windows窗口程序中消息循环message loop是通过使用application类提供的静态方法来启用和停止的,而application类下的run()方法和exit()方法就是用来启用和停止消息循环的方法,而我们上一期在结束按钮上编写的程序段就使用了application类下的exit()方法:

可以看到点击按钮后进入的程序段代码如下:

我们同样也可以在程序中对属性进行相应设置,来看一下我们上一期的代码段:

我们可以直接在代码窗口对label1控件的text属性进行随意赋值,也可以对它进行动态控制赋值,每个控件的属性是有差别的,当然所赋予它们的值一定要符合其属性的类型,这个值可能是字符串,也可能是数值类型。

下面大家可以练习一下通过一个小例子在程序代码中进行设置属性,在窗体上放置两个label标签控件,两个textbox文本框控件,还有一个button按钮按钮控件:

双击button显示按钮进入到form1.cs,即程序代码编辑区,并编写以下代码:

写完代码后,通过"Ctrl+F5"运行此程序,打开窗体窗口,通过输入账号和密码,点击按钮看看会出现什么样的结果。

人生有两出悲剧。一是万念俱灰;另一是踌躇满志。——萧伯纳

列举窗体控制台应用程序中的3中控件_今天来点枯燥的,Visual C#的Windows窗体运行过程...相关推荐

  1. 如何在.NET控制台应用程序中获取应用程序的路径?

    如何在控制台应用程序中找到应用程序的路径? 在Windows Forms中 ,我可以使用Application.StartupPath查找当前路径,但这似乎在控制台应用程序中不可用. #1楼 上面的答 ...

  2. 如何在C#Windows控制台应用程序中更新当前行?

    使用C#构建Windows控制台应用程序时,是否可以在不扩展当前行或转到新行的情况下写入控制台? 例如,如果我想显示一个百分比,该百分比代表一个过程到完成为止的距离,我只想在与光标相同的行上更新值,而 ...

  3. asp.net razor html,从控制台应用程序中的ASP.NET Razor模板生成HTML的当前最佳解决方案是什么?...

    ServiceStack是用于呈现Razor视图页面的另一个选项. 尽管它已针对集成到ASP.NET或HttpListener Web Host中进行了优化(并提供了用于在目录中自动发现和注册视图页面 ...

  4. 在WinForm应用程序中嵌入WPF控件(转)

      我们知道,在WPF界面上添加WinForm的控件需要使用WindowsFormHost类.而在WinForm界面上添加WPF控件该如何做呢?有没有类似的类呢?明显是有的,ElementHost就是 ...

  5. VS2010下ocx开发:(2)在C#程序中调用ocx控件

    在本文中,给出一个C#示例程序,调用上一篇博文中创建的MultiplyDemo.ocx控件.注意需要保证该控件已经注册过. 启动Visual Studio 2010,使用C#创建一个Windows窗体 ...

  6. python游戏程序中游戏对象是什么_练习项目21:使用python制作游戏(下)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这一篇教程,我们来完成游戏的主程序模块. 最终编写完的游戏会有如下界面. 游戏界面汇总图: 接下来,根据上一篇教程的结构,我们编写每一个类的代码. 一.S ...

  7. 技巧:在Silverlight 2应用程序中切换用户控件

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://terrylee.blog.51cto.com/342737/85341 ...

  8. java源程序中区分大小写_Java程序中不区分大小写字母。( )_学小易找答案

    [单选题]下列选项中,不属于Java语言特点的一项是( ) [单选题]丝绸时髦了,人造纤维过时了. [单选题]<葛生>出自<诗经>的: [多选题]keyshot渲染的光源是利用 ...

  9. 一个java程序中什么是主类_下列哪个是Java应用程序主类中正确的main方法?_学小易找答案...

    [判断题]用佛尔哈德法测定Ag + 时,不用先除去氮的低价氧化物.汞盐等杂质. [单选题]下列哪个是Java应用程序主类中正确的main方法? [判断题]javac.exe 命令文件存放在 JDK 安 ...

最新文章

  1. hic染色体构想_了解微服务:从构想到起点
  2. ROS系统 C++或Python实现话题消息的定义与使用
  3. 总结redis中对象的类型与编码
  4. 160809308周子济第7次作业
  5. deepin20自带c语言,deepin 20.1终于找到你-国产操作系统deepin之初体验
  6. 爬虫.之登陆及动态网页的抓取
  7. 格式化字符串漏洞利用 二、格式化函数
  8. 【离散数学】集合论 第三章 集合与关系(2) 集合的基本运算
  9. 办公自动化:PDF文件合并器,将多个PDF文件进行合并...
  10. 安鸾渗透实战平台--综合渗透--企业网站渗透流程
  11. 湖南师范大学2018年大学生程序设计竞赛新生赛 F-小名的回答
  12. POI之Excel字体样式
  13. 【周志华机器学习】线性模型
  14. CSS3配合JavaScript图片爆炸效果
  15. MAC OS 10个技巧让你秒变MAC达人
  16. java怎样将乘法优化成位移乘法_Java性能优化:程序优化
  17. Linux服务器的那些性能参数指标 Top命令技巧
  18. ROS专题----tf和tf2坐标变换
  19. 智能家居核心 —— wifi模块
  20. end=强制打印成一行;\t拉大列间距_xing2516_新浪博客

热门文章

  1. hive 表的常用操作
  2. 团队-团队编程项目作业名称-模块开发过程
  3. 基于网络监听方式的电子邮件实现基础
  4. 《Kotlin极简教程》第三章 Kotlin基本数据类型
  5. Python学习笔记(八)
  6. shiro框架的使用及扩展
  7. github心得体会
  8. 路由器简介一:路由器概念、基本结构及分类
  9. linux nmon
  10. 【路径规划】Dijkstra算法——超详细原理图解