当前位置: 首页 > news >正文

Windows窗体

Windows窗体
窗体
.NET Framework提供了一系列与窗体编程相关的类,用来供开发人员使用。这些类主要包含于System.Windows.Forms命名空间中。
其中与窗体和控件相关的基类见下表:

.NET Framework窗体编程相关基类  

窗体:可以是标准窗体,多文档界面(MDI)窗体,对话框或图形化的显示界面。窗体时对象,这些对象公开定义其外观的属性、其行为的方法、用于用户交互的事件。通过设置窗体的属性以及编写响应其事件的代码,可自定义该对象以满足应用程序的要求。windows也是控件,因为它是从Control类中继承过来的。
Control类为定义窗体及控件的基类。Form为窗体类,用来构造窗体,其他标准Windows控件类均派生于Control类
创建Windows窗体应用程序的方式:
1 .一般都是在创建项目的时候选择Windows应用程序,这样就能创建windows窗体应用程序
通过项目创建的Windows应用程序:

2.通过编程创建一个Windows窗体应用程序:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;//引用Windows窗体类
namespace WindowsForms//命名空间名
{
class myForm : System.Windows.Forms.Form//声明一个类,继承于Form类
{
public myForm() { }//myForm默认的构造函数
static void Main() //程序入口
{
Application.Run(new myForm());//启动标准的应用程序的消息循环
}
}
}
此程序中Application.Run(),Application 提供一些静态方法和属性以管理应用程序,例如启动和停止应用程序、处理 Windows 消息的方法和获取应用程序信息的属性。 此类不能被继承。Run方法有三种重载方法,在此是第三种重载方法,其意思是将窗体对象作为参数。运行结果是创建一个空白的Windows窗体:

控件 

 

(1) 使用Visual Studio 2005开发环境添加控件 

打开“工具栏”面板,讲目标控件拖入窗体中的合适位置即可。

(2) 使用代码添加控件 

使用代码在窗体中添加一个按钮。.NET Framework提供了System.Windows.Forms.Button类供开发人员实例化标准按钮对象,因此创建按钮的过程既是由Button类实例化对象的过程。此时,窗体被看作是容器,包含按钮控件,故设计时需将按钮对象作为窗体类的一个成员。在实例化窗体对象的同时实例化按钮对象,即可完成添加按钮操作。

当窗体需要包含有多个不同种类的控件时,要要布置好各个控件的位置、大小及顺序关系。即对各个控件进行布局。可以使用以下四种属性来布局控件:

(1) Location,设置控件相对于窗体左上角的X与Y坐标;

(2) Size,设置控件本书的高度和宽度;

(3) Anchor,把控件附着在窗体的一个或多个边框上;

(4) Dock,设定控件相对于窗体某个边框的停靠方式。

Location及Size都使用绝对值来设定控件的位置与大小,当窗体大小改变时,控件的大小及位置无法随窗体的变化而自动等比例的变化,造成布局的混乱。为了解决这个问题,C#为控件提供了Dock属性。Dock属性的取值于DockStyle枚举类型成员

要使程序完成一定功能,需要响应控件的特定事件,如单击、移动等。在VS2005环境中,选中目标控件,双击,即可添加控件的click事件,并自动切换到该事件的响应函数中。

在代码中添加如下内容,即可完成响应控件事件工作:

//响应Click事件

button1.Click += new System.EventHandler ( button1_Click ) ;

同时,需要添加button1_Click方法,作为事件的响应函数。  

标签控件(Label)是工具箱中最简单的控件,通常用来显示一些描述性文字。且显示内容通常在其声明周期内固定不变。Label控件的最常用属性为Text属性,用来指定在Label控件中显示的内容,可以通过设置Label控件的Color、Font、Style等属性来改变显示的效果。

(1) button控件

按钮控件(Button)允许用户通过单击来执行操作。当用户单击按钮时,即调用Click事件处理程序。可将代码放入Click事件处理程序来执行所选择的任意操作。

按钮上显示的文本由Text属性指定。如果文本超出按钮宽度,则换到下一行。但是,如果控件无法容纳文本的总体高度,则将剪裁文本。按钮(Button)控件还可以使用Image和ImageList属性显示图像

(2) 单选框和复选框控件

二者都允许用户从一系列的选项中选择,差别在于在一系列选项中单选框之间是“互斥”的,即只能有一个被选中;各个复选框选项之间相互无影响,即可有多个被选中。

.NET支持三种类型的按钮:按钮、单选框以及复选框,这三种按钮都继承于ButtonBase类。三种按钮分别对应于Button、CheckBox、RadioBox类,这些类包含于System.Windows.Forms命名空间中。

文本框控件负责为用户提供一个编辑数据的接口,也可以用来显示数据。.NET Frameword提供了TextBoxBase类支持文本框操作。该类为抽象类,由其派生的两个子类为:TextBox和RichTextBox分别对应于TextBox和RichTextBox控件

列表框控件 

列表控件用于向用户提供多选择项的动态列别。C#提供了两种类型的列表控件:ListBox控件和ComboBox控件,二者都可以完成列表选择任务,但各有自己的属性。二者均由ListControl基类派生而来,ListControl类继承于Control类。其中, ListBox控件

列表框(ListBox)用于在滚动的窗口显示一系列的条目。如果列表框中的条目多于在一个窗口中所能容纳的数目,则自动添加滚动条

ComboBox列表框控件显示与一个ListBox组合的编辑字段,使用户可以从列表中选择或输入新文本。ComboBox的默认行为是显示一个编辑字段,该字段附带一个隐藏的下拉列表。DropDownStyle属性确定要显示的组合框的样式。可以输入一个值,该值指示允许以下情况:简单的下拉列表(始终显示列表)、下拉列表框(文本部分不可编辑,并且必须选择一个箭头才能查看下拉列表框)或默认下拉列表框(文本部分可编辑,并且用户必须按箭头键才能查看列表)。若要始终显示用户不能编辑的列表,建议使用ListBox控件。

在Windows应用程序中日期时间相关控件是必不可少的。相关控件包括定时器Timer控件、DateTimePicker控件以及MonthCalendar控件。

(1) Timer控件

 定时器(Timer)控件用于以用户定义的事件间隔触发事件。Windows计时器是为单线程环境设计的,其中,UI线程用于执行处理。它要求用户代码有一个可用的UI消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。

当Enabled属性设置为true且Interval属性大于0时,将引发Tick事件,引发的时间间隔由Interval属性控制,该属性以毫秒为单位。若应用程序中实现了一个定时器,在程序执行结束时需要调用Dispose()方法,释放系统资源。

Form类位于System.Windows.Forms命名空间下,由Control类派生产生。该类具有非常丰富的成员。支持了C#窗体的绝大不部分操作。Form类与MDI应用程序相关的属性包括:

l ActiveMdiChild:该属性获取或指定当前的容器窗体中获得窗体
l IsMdiContainer:该属性获取和设置窗体是否作为一个MDI主窗体。
l IsMdiChild:获取当期窗体是否为一个MDI容器窗体的子窗体。
l MdiChildren:获取当期容器窗体的子窗体数组,只有当前窗体为MDI容器窗体时该属性值才有效。
l MdiParent:获取或设置此窗体的当前多文档界面(MDI)父窗体,利用此属性可以将一个普通窗体定义为一个MDI容器窗体的子窗体,形成包含关系。
l LayoutMdi:在MDI父窗体内排列多文档界面(MDI)子窗体。以便更易于导航和操作MDI子窗体。

MDI应用程序创建步骤如下:

(1) 打开Visual Studio 2005开发环境,在菜单上选择“文件”|“新建项目”命令,显示“新建项目”对话框,创建基于C#的Windows应用程序项目。

 (2) 在“解决方案资源管理器”中右击Form1.cs,在弹出菜单上选择“重命名”,然后将窗体的名称修改为MdiParentForm.cs,将窗体的Text属性设置为“MDI父窗体”,并将其IsMdiContainer属性设置为True。此时,Visual C#将客户区域变为暗灰色,并呈现下陷效果。这是MDI父窗口的标准外观。所有可见的子窗口都在该区域中显示。

 (3) 在菜单上选择“项目”/“添加Windows窗体”,创建一个新的窗体。将该窗体命名为MdiChild1.cs,并将其Text属性设置为MdiChild1。

(4) 类似的,添加第三个窗体到项目中。将该窗体命名为MdiChild2.cs,并将其Text属性改为Child2。

(5) 在“解决方案资源管理器”中双击MdiParentForm.cs,在设计器中显示父窗口,双击窗体访问其缺省的Load事件。输入下列代码:

MdiChild1 CldForm1 = new MdiChild1 ();

CldForm1.MdiParent = this;

CldForm1.Show();                      

(6) 编译执行,即可看到MDI框架,如下图所示:

 

转载于:https://www.cnblogs.com/wuming1415/archive/2012/01/19/2326135.html

相关文章:

  • DataWorks新手引导(持续更新)
  • TOP语句放到表值函数外,效率异常低下
  • 产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
  • Enum一点使用总结
  • 路由器相关参数及设置
  • 祝网友们龙年快乐!
  • CSS以图换字的9种方法
  • 部署Oracle 11.2.0.3 RAC (二)
  • [WinForm]DataGridView通过代码新增行问题
  • linux下配置SS5(SOCK5)代理服务
  • Spring.net 学习笔记之ASP.NET底层架构
  • stagefright框架 Video Playback的流程
  • EF架构~LinqToEntity里实现left join的一对一与一对多
  • Linux一般由四个主要部分组成
  • sshfs
  • 【React系列】如何构建React应用程序
  • canvas 高仿 Apple Watch 表盘
  • Git初体验
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java知识点总结(JavaIO-打印流)
  • miaov-React 最佳入门
  • PHP CLI应用的调试原理
  • 第2章 网络文档
  • 飞驰在Mesos的涡轮引擎上
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 我有几个粽子,和一个故事
  • 学习笔记:对象,原型和继承(1)
  • 延迟脚本的方式
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • #Spring-boot高级
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • 、写入Shellcode到注册表上线
  • .NET Core 中插件式开发实现
  • .NET 常见的偏门问题
  • .net 无限分类
  • .Net(C#)自定义WinForm控件之小结篇
  • .netcore 获取appsettings
  • .net分布式压力测试工具(Beetle.DT)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET是什么
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • ??在JSP中,java和JavaScript如何交互?
  • @GetMapping和@RequestMapping的区别
  • @NestedConfigurationProperty 注解用法
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution