Windows窗体编程(二)

1、鼠标事件处理

鼠标事件分为两种,一种产生EventArgs型参数,另一种产生MouseEventArgs型参数。

1)EventArgs型参数的鼠标事件 举例如下:

Click单击鼠标时发生

DoubleClick双击鼠标时发生

MouseEnter鼠标进入控件边界时发生

MouseLeave鼠标离开控件边界时发生

MouseHover 鼠标停在控件上方时触发

 

这些事件的处理程序原型如下:

private void Button_Click     (object sender,                                          EventArgs e)

                 事件处理程序名称  触发此事件的来源对象(此处是产生事件的控件) 包含了与事件相关的一些信息

 

2)MouseEventArgs型参数的鼠标事件 举例如下:

通过MouseEventArgs型参数,事件处理程序可以获取鼠标事件的信息,如鼠标位置、单击次数、按下的是鼠标哪个键等

MouseClick 单击鼠标时发生

MouseDoubleClick 双击鼠标时发生

MouseDown 按下鼠标时发生

MouseUP 放开鼠标时发生

 

MouseMove 鼠标在控件上方移动时触发(不管鼠标是否按下)

 

MouseEventArgs类的属性:

Button 记录按下的是左键、右键还是中键

Button属性的值是MouseButtons枚举类型

  成员名称 说明
Left 鼠标左按钮曾按下。 
Middle 鼠标中按钮曾按下。 
None 未曾按下鼠标按钮。 
Right 鼠标右按钮曾按下。 

Clicks 记录鼠标连续单击次数,用来处理“三击”等事件   不会用!

 

Delta 鼠标滚动的转动量

X 事件触发点的X坐标

Y 事件触发点的y坐标

 

这些事件处理程序的原型如下:

private void Button_MouseClick(object sender,MouseEventArgs e)

 

相关知识补充:

书中程序中的Color结构属于 System.Drawing空间。 它的公共属性为各种颜色。

 

2、键盘事件处理

键盘事件也分两种:一种产生KeyPressEventArgs型参数,一种产生KeyEventArgs型参数。

1)部分产生KeyPressEventArgs型参数的键盘事件

Keypress 敲击键盘上的按键时发生

KeyPressEventArgs型参数含有与按键对应的信息,其类的属性如下:

KeyChar 返回与按键对应的字符

Handled 指出KeyPress事件是否得到处理

这些事件处理程序的原型如下:

private void Form1_KeyPress(object sender,KeyPressEventArgs e)

2)部分产生KeyEventArgs型参数的键盘事件

KeyDown 按下按键时产生

KeyUp 释放按键时产生

KeyEventArgs型参数含有与按键相关的信息,其类的属性如下:

Alt 是否按下Alt键

Control 是否按下Ctrl键

Shift 是否按下Shift键

Handled 事件是否得到处理

KeyCode 返回与按键对应的Keys枚举值,不包含同时按下的修饰键(Alt、Ctrl、Shift)

KeyData 返回与按键对应的Keys枚举值,包含同时按下的修饰键

KeyValue 返回一个与按键对应的int型数值

Modifiers 返回一个只包含修饰键的Keys枚举值

 

3、图形框

属性:Image 设置图形框中的图像

        SizeMode 控制图像的显示方式

事件:Click 单击图形框时发生

SizeMode是一个PictureBoxSizeMode型枚举变量

  成员名称         说明
AutoSize        调整 PictureBox 大小,使其等于所包含的图像大小。 
CenterImage   如果 PictureBox 比图像大,则图像将居中显示。如果图像比 PictureBox 大,则图片将居于 PictureBox 中心,而外边缘将被剪裁掉。 
Normal           图像被置于 PictureBox 的左上角。如果图像比包含它的 PictureBox 大,则该图像将被剪裁掉。 
StretchImage  PictureBox 中的图像被拉伸或收缩,以适合 PictureBox 的大小。 
Zoom             图像大小按其原有的大小比例被增加或减小。 

       private void pictureBox1_Click(object sender, EventArgs e)
       {
           n++;
           if (n % 2 == 1)
           {
               this.pictureBox1.Image = global::Key.Properties.Resources.answer;
           }
           else
           {
               this.pictureBox1.Image = global::Key.Properties.Resources.faces;
           }

在代码中会用到  global::命名空间.Properties.Resources.项目资源文件

其实在添加资源图片时,Form1.Designer.cs中在InitializeComponent()方法中pictureBox1的初始化时,就有类似语句

this.pictureBox1.Image = global::Key.Properties.Resources.faces;

这里的key虽然是空间名,且看似是程序建立初定义的空间名,但实际上与项目的属性中“默认空间名”相关联,修改“默认空间名”内容,global::后的命名空间名也必须修改。

EasyCapture1

 

4、列表框(ListBox)

列表框为用户提供一组选项,用户可以选择其中一个或多个。

方法:

ClearSelected() 取消所有选择

GetSelected() 检验某项是否被选中,若选中返回true,否则返回false

 

事件:

SelectedIndexChanged 选中的项目变化时发生

 

属性:

Items 由列表框中所有项目(Item)组成的集合

 

SelectionMode 选择模式,有None、One、MultiSimple、MultiExtended四种选项

属性值
SelectionMode 枚举值之一。默认为 SelectionMode.One。

成员名称              说明
MultiExtended    可以选择多项,并且用户可使用 Shift 键、Ctrl 键和箭头键来进行选择。  
MultiSimple        可以选择多项。 
None                无法选择项。 
One                 只能选择一项。 

 

SelectedIndex 返回选中项目的索引,若没有选中项目,则返回-1

SelectedItem 返回选中的项目,若选中多个项目,则返回第一个

SelectedIndices 返回由所有选中项目的索引组成的集合

SelectedItems 返回由所有选中项目组成的集合

MultiColumn 为true时,项目可以多列显示

Sorted 为true时项目按字母顺序排列

Items 是一个由列表框中所有项目(Item)组成的集合,集合是.Net中定义好的一种类,通过该类的方法可以像集合中添加项目或从集合中删除项目,Item属性拥有的方法(其实只要是集合类型的都拥有如下方法)如下:

Add() 添加项目

Insert() 插入项目到指定位置

Remove() 删除项目、参数为要删除的项目

RemoveAt() 删除项目、参数为要删除的项目的索引

Clear() 清空列表框

 

当属性SelectedMode 选择MultiExtended时,如果要一次性删除掉所有选中的选项,可以使用下列方法,即将书中的if语句改为while语句。

        private void removeButton_Click(object sender, EventArgs e)
        {
            while (listBox1.SelectedIndex != -1)
            {
                this.listBox1.Items.RemoveAt(listBox1.SelectedIndex);
            }
        }

 

5、复选列表框(CheckedListBox)

复选列表框派生于列表框ListBox,区别是复选列表框在每个项目(Item)前加了一个复选框。

复选列表框中的项目可以被勾选(Checked)或被选中(Selected),被勾选(Checked)的项目可以有多个,但选中(Selected)的项目只能有一个

因为复选列表框继承于列表框,所以它继承了列表框中所有属性、事件、方法,CheckListBox类的常见属性和事件如下:

属性:

Items 由列表框中所有项目(Item)组成的集合

SelectedItem 返回选中(Selected)的项目

SelectedIndex 返回选中项目的索引,若没有选中项目,则返回-1

CheckedItems 返回被勾选(Checked)的一组项目

CheckedIndices 返回被勾选项目的一组索引

SelectionMode 是否可以多选,模式和ListBox类中一样

CheckOnClick 为ture时第一次单击即勾选项目,否则第一次为选中,第二次为勾选

MultiColumn 为true时项目可以多列显示

Sorted 为true时项目按字母顺序排列

 

事件:

SelectedIndexChanged 选中(Selected)的项目变化时发生

 

ItemCheck 勾选(Checked)或取消项目旁的复选框时发生

当触发ItemCheck事件时,系统会发送给事件处理程序一个ItemCheckEventArgs型参数,ItemCheckEventArgs类的属性如下:

CurrentValue 表示当前项目勾选状态,用CheckState型枚举表示

CheckState枚举

成员名称           说明
Checked          该控件处于选中状态。 
Indeterminate  该控件处于不确定状态。一个不确定的控件通常具有灰色的外观。 
Unchecked       该控件处于未选中状态。 

 

NewValue 勾选状态发生变化后,项目的CheckState值

Index 勾选状态发生变化的那个项目的索引

 

6、下拉式列表框(ComboBox)

下拉式列表框以下拉清单的形式显示列表。默认情况下,下拉清单是收起的,单击向下箭头可以展开下拉清单。

属性:

Items 有列表框中所有项目(Item)组成的集合

SelectedItem 返回选中(Selected)的项目

SelectedIndex 返回选中项目的索引,若没有选中项目,则返回-1

DropDownStyle 下拉式列表框的显示类型

该属性是ComboBoxStyle枚举类型:

成员名称              说明
DropDown          文本部分可编辑。用户必须单击箭头按钮来显示列表部分。这是默认样式。 
DropDownList     用户不能直接编辑文本部分。用户必须单击箭头按钮来显示列表部分。 
Simple                文本部分可编辑。列表部分总可见。 

 

MaxDropDownItems 下拉清单的最大长度

Sorted 为true时项目按字母顺序排列

 

事件:

SelectedIndexChanged 选中(Selected)的项目变化时发生

 

7、列表视图(ListView)

列表视图可以穿件类似于Windows资源管理器的界面。

属性:

Items 由列表视图中所有项目(Item)组成的集合

SelectedItems 列表视图中所有选定的项目

SelectedIndices 获取控件中选定项的索引。该属性是个集合

View 设置列表视图的显示方式,共五种

枚举View的值:

成员名称       说明
Details         每个项显示在不同的行上,并带有关于列中所排列的各项的进一步信息。最左边的列包含一个小图标和标签,后面的列包含应用程序指定的子项。列显示一个标头,它可以显示列的标题。用户可以在运行时调整各列的大小。 
LargeIcon    每个项都显示为一个最大化图标,在它的下面有一个标签。 
List             每个项都显示为一个小图标,在它的右边带一个标签。各项排列在列中,没有列标头。 
SmallIcon     每个项都显示为一个小图标,在它的右边带一个标签。 
Tile             每个项都显示为一个完整大小的图标,在它的右边带项标签和子项信息。

 

Activation 设定激活项目的方式,有Stantard、OneClick、TwoClick三种方式

该属性是ItemActivation枚举类型,该枚举类型的成员如下:

成员名称    说明
OneClick    用户必须单击以激活项。光标更改为手形指针光标,项文本在用户将鼠标指针移动到项上时更改颜色。 
Standard   用户必须双击以激活项。在用户将鼠标指针移动到项上时没有提供任何反馈。 
TwoClick    用户必须单击项两次以激活此项。单击两次与标准的双击不同,这是因为两次单击之间的时间间隔可以是任意的。当用户将鼠标指针移动到项上时,该项文本更改颜色。 

 

MultiSelect 设定是否可以多选

CheckBoxes 设定是否显示复选框

LargeImageList 用于保存大图标的ImageList

SmallImageList 用于保存小图标的ImageList

LabelEdit 设定是否可以编辑项目的名称

Columns 设置“详细信息”视图中的列

GridLines 设定“详细信息”视图中是否显示网格线

ContexMenuStrip 设置列表视图关联的右键菜单

Sorting 设置项的排序方式(None、Ascending、Descending)

该属性是SortOrder 枚举类型,成员如下:

成员名称      说明
Ascending   项按递增顺序排序。 
Descending 项按递减顺序排序。 
None          项未排序。 

 

事件:

SelectedIndexChanged 选中的项目改变时发生

ItemActivate 激活项目时发生

ColumnClick 在“详细信息”视图中单击“列标题”时发生

 

在使用ItemActivate()方法时,一般用switch分支,对SelectedIndices的值进行判断,再进行相应的处理,具体如下:

        private void listView1_ItemActivate(object sender, EventArgs e)
        {
            string myDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string myMusic = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
            string myPicture = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            switch (this.listView1.SelectedIndices[0])//SelectedIndices是个集合
            {
                case 0: Process.Start(myDoc); break;
                case 1: Process.Start(myMusic); break;
                case 2: Process.Start(myPicture); break;
                case 3: Process.Start("iexplore.exe"); break;
                case 4: Process.Start("notepad.exe"); break;
                case 5: Process.Start("calc.exe"); break;
            }
        }

 

8、树状视图(TreeView)

像文件夹一样的树状层次结构可以用树状视图(TreeView)实现,它能清晰的现实节点(Node)间的层次结构。

属性:

Nodes 由树状视图中所有节点(TreeNode)组成的集合

SelectedNode 选中的节点

ImageList 设定用于显示图标的ImageList

CheckBoxes 设定是否显示复选框

LabelEdit 设定是否可以编辑节点的名称

 

事件:

AfterSelected 鼠标单击节点时发生

AfterChecked 节点的勾选状态改变时发生

NodeMouseDoubleClick 鼠标双击节点时发生

 

9、控件布局

以下两个控件的属性 决定了控件在容器中的布局情况,跟着书上例子做一遍很有趣

锚定 Anchor

停靠 Dock

 

在练习期间,发现FormBorderStyle属性决定了窗体Form1的是否可调节还是固定大小等。

posted on 2009-11-14 22:05  友闻语上  阅读(763)  评论(0编辑  收藏  举报