Windows窗体应用开发2--窗体和控件
1.Windows窗体应用程序的各种组件
2.windows窗体控件的主要类别和功能
3.Windows窗体应用程序处理事件的方法
4.添加并配置Windows窗体和控件
5.创建时间处理程序并监视程序
6.在程序运行时向窗体添加控件和事件处理程序
1.创建简单Windows应用程序


之前创建的HelloWorld的窗口可以和我们平时使用的窗口做个对比,左上角有个标题栏,右上角是几乎所有程序都有的最小化,最大化,关闭按钮。此时来看解决方案管理器(solution explorer)。对比软件自动生成的几个文件:Assemblyinfo.cs,Resources.resx,Settings.settings,Form1.cs,Program.cs等等。

按照以前写代码的想法,一般程序都是从main开始执行的,打开Program.cs可以发现里面有个main函数,也就是说这个文件就是整个项目的入口,再打开Form1.cs文件。这个文件就是我们一开始写HelloWorld的地方,也就是说这是一个实现helloWorld的模块,在这个窗口中有个button,点击触发事件,实现一个消息弹出。此时如果我们要添加一个窗体
2.windows窗体控件的主要类别和功能
我们添加一个叫做Form2.cs的窗体,做工程的时候不要这个样命名。添加完毕会发现和一开始我们建立的Form1.cs窗体是一样的,同样的也有窗体属性,可以通过属性来确定这些窗体的各种功能,比如命名,或者窗体上的某个按钮要键盘才能点击,常见的窗体属性如下:
| (Name) | 项目中窗体的名称(写代码时候用的类似android中所说的ID)通过这个id找到这个可视的窗口 | 默认命名就是上面偷懒时候自动命名出来的form1.cs form2.cs |
| AcceptButton | 设置某个按钮,当用户按Enter键时才相当于单击此按钮 | |
| CancelButton | 当用户按ESC的时候相当于单击此按钮 | |
| ControlBox | 控制:最大化、最小化、帮助、关闭 | |
| StrartPostion | 窗体第一次出现时候的位置 | |
| FormBorderStyle | 控制窗体的外观 | |
| MaximizeBox | 是否有最大化按钮 | |
| MinimizeBos | 最小化 | |
| Text | 显示在标题栏上的文本 |
向窗体添加控件
方法1 向窗体添加多个控件,然后调整其大小和位置:
(1)工具箱
(2)工具箱中双击要添加的控件
(3)添加之后可以调整位置
方法2 添加控件之后,立即调整其位置和大小
方法3 拖拽控件到窗口
方法1 2 3 主要是玩转这个工具箱的使用,鼠标点多看,以“Problem driven”的想法来看哪个顺手就用哪个。主要将工具箱玩的溜。
控件和组件的功能分类(具体要实现的时候去查表格,不必死记硬背):
文本编辑(编辑框,输账号密码,记账时候写数字)
文本编辑主要有TextBox,RichTextBox,MaskedTestBox。
文本显示(用户不能编辑,文本显示)
Label,LinkLabel,StatusStrip
从列表中选择
CheckListBox 显示一个可滚动的选项列表,每个选项带有一个复选框
ComboBox 显示下拉式列表
DomainUpDown 显示一个文本项列表
..
图形显示
PictureBox 在框架中显示图形文件,位图和图标
值设置
CheckBox 复选框和文本标签
RadioButton 可启用或禁用的按钮以及文本标签
TrackBar 用户沿着标尺移动滑块来设置值
内容显示
DataGridView 用户自定义的网格中显示数行和数列数据
WebBrower 使用户能够在窗体中浏览Web页面
ProcessBar 在水平条中显示相应比例的矩形来指示操作进度
日期设置
DateTimePicker 显示一个图形日历使得用户能够选择日期或者时间
MonthCalendar 显示一个图形日历使得用户能够选择日期范围
菜单控件
MenuStrip 显示按功能分组的应用程序命令和选项
ContexMenuStrip 当用户用鼠标右键单击关联控件时,显示相应的快捷菜单
命令
Button 提供选项以启动、停止、中断一个过程
NotifyIcon 在任务栏的状态通知区域显示一个图标
容器
Panel 将一组控件组合在一个不带标签的框架上,用户可在其中进行滚动操作
FlowLayout 在流布局中自动排列控件
GroupBox 将一组控件组合在一个带标签的控件上,用户可以进行滚动操作
...
3.Windows窗体应用程序处理事件的方法
事件处理:前面提到一个helloWorld的程序:点击按钮弹出消息框HelloWorld
此时转变为程序员写这个程序的想法:一个点击此按钮触发一个事件,调用某段代码实现某个功能。
在设计时创建事件处理程序
(1)默认事件处理程序:双击窗体或者控件来为此对象的默认事件创建事件处理程序。前面的button控件默认的事件就是click,而窗体,窗体就是load某个事件
(2)属性窗口:

在属性中找到事件,也就是说:有哪些动作触发哪些事件。
(3)代码编辑器窗口:直接在代码编辑器中创建事件处理程序,在C#应用程序中,通过手动方式将处理程序的代码写入窗口
在程序运行时创建事件处理程序
也就是添加代码:
button1.click + = new EventHandler(button1_click);
解读语法,对象button1调用click,点击时候是通过新的对象,在生成这个对象时实现button1_click
更多的事件处理技巧
(1)使用单个事件处理方法来处理多个事件。
(2)创建重写基类方法的事件处理方法。
关于类与对象的知识点:
控件基类: 控件都是从System.Windows.Forms.Control类继承而来的。通常意义上的控件都是一种组件(Component),这种组件结合了图形界面的特点和预先设计好的功能。其实控件就是用来完成特定任务的可重用代码单元。所有的控件都从Control基类继承而来,因此即使是不同的控件,也会具备一些相同的属性。
System.Object
System.MarshallByRefObject
System.ComponentModel.Component
System.Window.Forms.Control
Windows窗体应用开发2--窗体和控件的更多相关文章
- Windows窗体应用开发3--配置标准控件1
1.掌握主要的Windows窗体控件的功能 2.掌握使用SplitContainer控件的方法 3.掌握使用TreeView控件的方法 注:新建一个WindowsForm 命名为Form2.cs 主要 ...
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)
在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位?此时就要借助控件的.Anchor属性.Anchor属性定义控件的定位点位置.当控件锚定到某个 ...
- WPF加载Winform窗体时 报错:子控件不能为顶级窗体
一.wpf项目中引用WindowsFormsIntegration和System.Windows.Forms 二.Form1.Designer.cs 的 partial class Form1 设置为 ...
- Windows Store App JavaScript 开发:WinJS库控件
在介绍了如何使用标准的HTML控件以及WinJS库中提供的新控件之后,下面来着重介绍WinJS库中几种常用的控件. (1)ListView控件 在开发Windows应用商店应用时可以使用ListVie ...
- SNF开发平台WinForm之三-开发-单表选择控件创建-SNF快速开发平台3.3-Spring.Net.Framework
3.1运行效果: 3.2开发实现: 3.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...
- SNF开发平台WinForm-Grid表格控件大全
我们在开发系统时,会有很多种控件进行展示,甚至有一些为了方便的一些特殊需求. 那么下面就介绍一些我们在表格控件里常用的方便的控件: 1.Grid表格查询条 Grid表格下拉 3.Grid表格弹框选 ...
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载
在前面介绍的几篇关于CRM系统的开发随笔中,里面都整合了多个页面的功能,包括多文档界面,以及客户相关信息的页面展示,这个模块就是利用DevExpress控件的XtraTabPage控件的动态加载实现的 ...
- .NET混合开发解决方案15 WebView2控件集成到WinForm程序编译后的文件及结构说明
系列目录 [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...
- UWP开发随笔——UWP新控件!AutoSuggestBox!
摘要 要开发一款优秀的application,控件肯定是必不可少的,uwp就为开发者提供了各种各样的系统控件,AutoSuggestBox就是uwp极具特色的控件之一,也是相对于之前win8.1的ua ...
随机推荐
- tableView 的协议方法
需遵守协议 UITableViewDataSource, UITableViewDelegate,并设置代理 UITableViewDelegate 继承自 UIScrollViewDelegate ...
- 服务器部署php项目
windows服务器 首先打开开始菜单,点击运行. 然后输入mstsc,确定 输入你的服务器IP,点击连接 这里选择 是 然后就到了登录界面,输入用户名和密码就可以了 linux服 ...
- 【转】如何知道DLL是32位还是64位
源地址:http://blog.csdn.net/skysword2/article/details/52588624
- java webservices 以Axis1.4方式 调用sap webservice接口.
1. 首先需要下载Axis1.4 jar包,这个必应搜索大把,下载下来后把jar包加入eclipse工程项目路径中即可. 2. 下载mail.jar和activation.jar 俩个包.下载地址:h ...
- 常用linux基础命令(持续更新...)
删除 空目录 rmdir非空目录 rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 删除文件命令rm -f 文件名将会强行删除文件,且无提 ...
- 文件上传之Ajax篇
AJAX上传文件 1.为什么要写这篇文章 楼主前几天去北京面试,聊起ajax上传文件, 面试官告之不能,遂讨论之,不得果,于是写下这篇文章,希望能和大家一起学习 2.正文 首先,要使用ajax上传文 ...
- kuangbin专题十六 KMP&&扩展KMP HDU2594 Simpsons’ Hidden Talents
Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. Marg ...
- CSS(十三).高度如何铺满全屏
该需求来源一次面试题. IE6不认识!important声明,IE7.IE8.Firefox.Chrome等浏览器认识:而在怪异模式中,IE6/7/8都不认识!important声明,这只是区别的一种 ...
- 分页插件PageHelper
一.PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,Po ...
- drozer与adb工具的安装与使用
drozer:链接: https://pan.baidu.com/s/1skTJdgh 密码: wah1 adb:链接: https://pan.baidu.com/s/1gfpIkuv 密码: n8 ...