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 ...
随机推荐
- 转:IDEA 与 eclipse 的部分区别!
Idea 与 Eclipse 快捷键的区别,上为Eclipse的快捷键,下为Idea的快捷键查找类名CTRL + SHIFT + RCTRL + N 查找JAR包中的类CTRL + SHIFT + T ...
- Microsoft Visio绘图
2000年微软公司收购同名公司后,Visio成为微软公司的产品.Microsoft Visio是Windows 操作系统下运行的流程图软件,它现在是Microsoft Office软件的一个部分.Vi ...
- VB-机房收费系统之Excel导出
敲机房很久了,感觉对代码的感知力终于有所提高了,很是开心.今天在敲学生充值记录查询的时候发现,其中有了新的知识, 这时候就该到了分析问题的时候了.不说废话了! 首先 保证自己的笔记本或者电脑上必须有 ...
- CF70D(动态凸包)
CF70D(动态凸包) 给出q(<=1e5)个询问,每次在加上一个点,维护凸包,或者询问某个点是否在凸包内(在边上也算). 听说可以用cdq做--但是并不会.我等蒟蒻只会用平衡树做. 首先,假设 ...
- 解决Android应用安装快完毕时提示签名冲突,android签名文件生成(转)
最近开发了一个Android手机应用,自己用Eclipse调试安装没问题,使用其他人调试生成的bin下的apk就会出现问题,安装到最后提示"安装签名冲突"错误,想了一下估计是没有给 ...
- 微信Dat文件解码
最近在整理磁盘文件,因为经过一段时间的蹂躏后,磁盘实在是太多东西了,不整理一下,简直对不住我的SSD好嘛.偶然发现磁盘中某公司的文件夹占用空间简直不能再大,那可是我的C盘啊,合计才119GB的SSD空 ...
- Mysql-proxy代理内网数据库
Mysql-proxy 参考:https://segmentfault.com/q/1010000000394160 情景分析:首先您需要正在使用UCloud云主机(uhoust)以及云数据库(udb ...
- eclipse gradle 找不到依赖解决办法
右击工程,选择gradle 在点击Refresh Gradle Project 即可,..不得不说,gradle 在eclipse 下真没maven 好用.....
- Realm数据库的使用
https://github.com/lipanquan/Realm/tree/master
- Vuejs 实现权限管理
程序运行时,router只配置登陆 首页404 等基本页面 import Main from '@/views/Main.vue'; // 不作为Main组件的子页面展示的页面单独写,如下 expor ...