Windows基础控件

来源:互联网 发布:09霍华德vs詹姆斯数据 编辑:程序博客网 时间:2024/06/05 11:28

一、Windows控件概述

    Windows窗体中只能容纳Windows窗体控件,控件是带有可视化表示形式的组件,所有Windows窗体控件都是从System.Windows.Form.Control类派生的。Control类是定义控件的基类。Control类实现向用户显示信息的类所需的基本功能,它处理用户通过键盘和鼠标设备所进行的输入。Windows窗体控件都是以类的形式提供的。

    在Visual Studio2010开发环境中,常用的控件可分为文本类控件、选择类控件、分组控件、菜单控件、工具栏控件以及状态栏控件。Windows应用程序控件的基类是位于System.Windows.Form命名空间的Control基类。Control类定义了控件类的共同属性、方法和事件,其他的控件类都直接或者间接派生自这个基类。

几种常用控件的作用如表所示

控件分类

作用

文本类控件

文本类控件可以在控件上显示文本

选择类控件

主要为用户提供选择的项目

分组控件

使用分组控件可以将窗体中的其他控件进行分组处理

菜单控件

为系统制作功能菜单,将应用程序命令分组,使他们更容易访问

工具栏控件

提供了主菜单中常用的相关工具

状态栏控件

用于显示窗体上的对象的相关信息,或者可以显示应用程序的信息

 

二、控件的相关操作

    对控件的相关操作包括添加控件、对齐控件、锁定控件和删除控件等。

1、添加控件

    可以通过“在窗体上绘制控件”、“将控件拖拽到窗体上”和“以编程方式向窗体添加控件”这三种方法添加控件。

◆在窗体上绘制控件

    在工具箱中单击要添加到窗体的控件,然后在该窗体上单击控件左上角位于的位置,然后拖动到该控件右下角位于的位置,控件按指定的位置和大小添加到窗体中。

◆将控件拖拽到窗体上

    在工具箱中单击所需要的控件并将其拖拽到窗体上,控件以其默认大小添加到窗体的指定位置上。

◆以编程方式向窗体添加控件

    通过new关键字实例化要添加控件所在的类,然后将实例化的类添加到窗体中。

例:通过Button按钮的Click事件添加一个TextBox控件,代码如下:

privatevoid button1_Click( object sender, System.EventArgs e ){

    TextBox myTest = new TextBox();    //实例化TextBox类

    myTest.Location = new Point( 25, 25 );  //设置对象的Location属性

    this.Controls.Add( myTest );  //将控件添加到当前窗体中

}

 

2、对齐控件

    选定一组控件,这些控件需要对齐。在执行对齐之前,首先选定主导控件(首先被选定的控件就是主导控件)。控件组的最终位置取决于主导控件的位置,再选择菜单栏中的“格式”/“对齐”命令,然后选择对齐方式。

◆左对齐:将选定控件沿他们的左边对齐

◆右对齐:将选定控件沿他们的右边对齐

◆居中对齐:将选定控件沿他们的中心点水平对齐

◆顶端对齐:将选定控件沿他们的顶边对齐

◆中间对齐:将选定控件沿他们的中心点垂直对齐

◆底部对齐:将选定控件沿他们的底边对齐

 

3、锁定控件

在控件的“属性”窗口中,单击Locked属性并选择True。此外,还可以右击控件并选择“锁定控件命令”。如果要锁定窗体上的所有控件,可以选择菜单栏中的“格式”/“锁定控件”命令。

 

4、删除控件

删除控件简单,可以在控件上单击鼠标右键,在弹出的快捷菜单中选择“删除”命令进行删除,或者选中控件,然后按下Delete键。

 

三、关于Control类

    System.Windows.Froms命名空间中有一个特殊的类,它是每个控件和窗体的基类,这个类就是System.Windows.Form.Control。Control类执行核心功能,创建用户所见的界面。Control类派生于System.ComponentModel.Component类。Component类为Control类提供了所必要的基础结构,在把控件拖放到设计界面上以及包含在另一个对象中时需要它。Control类为派生于它的类提供了一个很长的功能列表。


1、大小和位置

    控件的大小和位置由属性Height、Width、Top、Bottom、Left、Right以及辅助属性Size、Location确定。区别是Height、Width、Top、Bottom、Left、Right属性值都是一个整数,而Size的值使用一个Size结构来表示,Location的值使用一个Point结构来表示。

    Size结构和Point结构都包含XY坐标。Point结构一般相对于一个位置,而Size结构是对象的高和宽。Size和Point都位于System.Drawing命名空间。它们非常相似,因为它们都提供了XY坐标对,还拥有用于简单的比较和转换的重写运算符。例如,可以对两个Size结构执行相加操作。对于Point结构,加法运算符已进行了重写,可以把Size结构加到Point结构上,得到一个新的Point结构。其结果是给某个位置加上某个距离位置值,得到一个新位置。

    Bounds属性返回一个Rectangle对象,它表示一个控件区域。这个区域包含滚动条和标题栏。Rectangle也位于System.Drawing命名空间。ClientSize属性是一个Size结构,表示控件的客户区域,不包含滚动条和标题栏。

    PointToClient和PointToScreen方法是方便的转换方法,它们的参数是Point结构,返回一个Point结构PointToClient的Point参数表示屏幕坐标,该方法把屏幕坐标转换为基于当前客户对象的坐标,这非常便于进行拖放操作。PointToScreen正好与之相反,它提取客户对象的坐标,把它转换为屏幕坐标。

    Dock属性确定子控件停放在父控件的哪条边上。DockStyle枚举值用作其属性值,属性值包括Top、Bottom、Left、Right、Fill和None。Fill会使控件的大小正好匹配父控件的客户区域。

    Anchor属性把子控件的一条边与父控件的一条边对齐,这与停靠不同,因为它不设置父控件的一条边,而是把到该边界的当前距离设置为常量。Anchor属性采用AnchorStyles枚举的值,其值包括Top、       Bottom、Left、Right和None。通过设置该属性值,可以在重新设置父控件的大小时,动态地设置子控件的大小。这样,当用户重新设置窗体的大小时,按钮和文本框就不会被剪切或隐藏。

    Dock和Anchor属性与Flow和Table布局控件一起使用,可以创建非常复杂的用户窗口。对于包含许多控件的复杂窗体来说,窗口大小的重新设置比较困难。

 

2、外观

    与控件外观相关的属性有BackColor和ForeColor,它们把System.Drawing.Color对象作为其值。BackGroundImage属性把基于Image的对象作为其值。System.Drawing.Image是一个抽象类,用作Bitmap和Metafile类的基类。BackColorImageLayout属性使用ImageLayout枚举设置图像在控件上的显示方式,其有效值是Center、Tile、Stretch、Zoom和None。

    Font和Text属性处理文字的显示。要修改Font属性,需要创建一个Font属性,在创建Font对象时,需要指定字体名称,字号和样式。

 

3、用户交互操作

    用户交互操作最好描述为控件创建和响应的各种事件。一般比较常见的事件有:Click、DoubleClick、KeyDown、KeyPress、Validating和Paint。

    鼠标事件有Click、DoubleClick、MouseDown、MouseUp、MouseEnter、MouseLeave和MouseHover处理鼠标和控件的交互操作。Cl i ck和DoubleClick事件都把EventArgs作为其参数。而MouseDown和MouseUp事件把MouseEventArgs作为其参数。MouseEventArgs包含几个有用的信息,例如单击的按钮、按钮被单击的次数、鼠标轮制动器(鼠标轮上的凹槽)的数目和鼠标的当前XY坐标。如果可以访问这些信息,就必须处理MouseDown和MouseUp事件,而不是Click和DoubleClick事件。

注:如果处理Click和DoubleClick事件,每次捕获一个DoubleClick事件,也会引发Click事件。如果处理不正确,就会出现我们不希望的结果。

 

    键盘事件的工作方式与鼠标类似:需要一些信息来确定处理什么事件。KeyPress事件接收一个KeyPressEventArgs,它包含表示被按键的字符值KeyChar。Handled属性用于确定事件是否已处理,把Handled属性设置为True,事件就不会由操作系统进行默认处理。

    如果需要被按的键的更多信息,则处理KeyDown或KeyUp事件会比较合适,它们都接收KeyEventArgs。KeyEventArgs中的属性包括Ctrl、Alt或Shift键是否被按下。

    KeyCode属性返回一个Keys枚举值,表示被按下的键。与KeyPressEventArgs.KeyChar不同,KeyCode属性指定键盘上的每个键,而不仅仅是数字、字母键。

    KeyData属性返回一个Key值,还设置修饰符。修饰符与值进行OR运算,指定是否同时按下了Shift或Ctrl键。

    KeyValue属性是Keys枚举的整数值。

    Modifiers属性包含一个Keys值,它表示被按下的修饰符键。如果选择了多个修饰符,这些值就进行OR运算。

    键盘事件以下述顺序来引发:①KeyDown②KeyPress③KeyUp。

 

    Validating、Validated、Enter、Leave、GotFocus和LostFocus事件都处理获得焦点(或被激活)和失去焦点的控件。在用户用Tab键选择一个控件或用鼠标选择该控件时,该控件就获得了焦点。

    Validating和Validated事件在验证控件时发生。这些事件接收一个CancelEventArgs,利用该参数,把Cancel属性设置为True,就可以取消以后的事件。如果定制了验证代码,而且验证失败,就可以把Cancel属性设置为True,且控件也不会失去焦点。Validating事件在验证过程中发生,Validated事件在验证过程后发生。

    这些事件的引发顺序如下:①Enter②GotFocus③Leave④Validating⑤Validated⑥LostFocus。

注:理解这些事件的引发顺序是很重要的,可以避免不小心创建事件。如,在控件的LostFocus事件中设置控件的焦点,就会创建一个消息死锁,且应用程序会停止响应。

 

0 0
原创粉丝点击