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::后的命名空间名也必须修改。

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的是否可调节还是固定大小等。

转载于:https://www.cnblogs.com/365up/archive/2009/11/14/1603152.html

Windows窗体编程(二)相关推荐

  1. C# Windows 窗体编程入门详解

    C# Windows 窗体编程入门详解 基于Web的B/S架构应用程序近年来确实非常流行,B/S易于部署.易于维护的特点使Web应用程序开发得到了前所未有的发展.但是,Web应用程序的缺点是,它们有时 ...

  2. C#学习笔记:Windows窗体编程——组合框ComboBox的使用

    参考书目:C#6.0学习笔记--从第一行C#代码到第一个项目设计(作者周家安)P331 学习内容:组合框ComboBox的使用.从ComboBox中取出选择项,并显示在另外的label控件上 第一步: ...

  3. 《Visual C# 程序设计》课程学习(10)——第10章 Windows 窗体应用程序开发

    10.1 Windows窗体编程基础 10.1.1 WinForms概述 #region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法 - 不 ...

  4. 窗口消息——Windows核心编程学习手札之二十六

    窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...

  5. 未处理异常和C++异常——Windows核心编程学习手札之二十五

    未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...

  6. 异常处理程序和软件异常——Windows核心编程学习手札之二十四

    异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...

  7. 结束处理程序——Windows核心编程学习手札之二十三

    结束处理程序 --Windows核心编程学习手札之二十三 使用SEH可以只关注程序要完成任务,而运行中发生的错误,系统将会发现并通知.Windows引入SHE是为了便于操作系统的开发,使用SHE所造成 ...

  8. 插入DLL和挂接API——Windows核心编程学习手札之二十二

    插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...

  9. 线程本地存储器——Windows核心编程学习手札之二十一

    线程本地存储器 --Windows核心编程学习手札之二十一 C/C++运行期库使用线程本地存储器,运行期库是在多线程应用程序出现前设计的,因此运行期库里的大多数函数是用于单线程应用程序的.函数strt ...

最新文章

  1. 魅族怎么查看内存linux,这就是魅族超级旗舰:看燃
  2. 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(一)
  3. hdu 1086 A - You can Solve a Geometry Problem too (线段的规范相交非规范相交)
  4. Java中abstract和interface的区别
  5. Linux命令应用大词典-第25章 备份与还原
  6. linux服务器优化
  7. 敏感词过滤的php代码,ThinkPHP敏感词汇过滤
  8. 性能监视器 Performance Monitor-对SQLSERVER进行性能监控
  9. 图基(Tukey)检验
  10. win7任务栏谷歌浏览器图标显示异常
  11. 【 许鹏-1021041305-安装单机版Swarm并试用】
  12. 如何PDF转WORD文档?这三个方法分享给你
  13. SigFox Vs. LoRa:技术和商业模式之间的比较
  14. 无线linux应用及配置--wifi配置
  15. LeetCode刷题之---上一个排序
  16. 五款最出色的数据恢复工具
  17. win10 实时保护对KEIL5 编译速度慢的响应
  18. php react ssr,React-SSR
  19. Halcon视觉检测——PCB板处理:获取焊点及线路端点
  20. TopoDOT | 不是TopDOT !

热门文章

  1. EJB 3.0中会话Bean,实体Bean,消息驱动Bean的作用和例子
  2. MySQL第12天:MySQL索引优化分析之性能优化案例实践
  3. 了解linux内核必读的5本书
  4. 计算机网络:大小端存储
  5. git安装和使用---管理远程仓库
  6. OpenGL 绘图移动
  7. Python3使用tkinter编写GUI程序
  8. Kubernetes网络一年发展动态与未来趋势
  9. BZOJ 4584 [Apio2016]赛艇
  10. intelliJ idea运行新的test功能时,报错:class not found ..... empty test suite