定制vb.net控件编程拦截击键动作


  一、简介

  首先, 本文假定你已经熟习vb和visualstudiowindows表单设计器。

  在开发定制windows表单控件时, 提供我们自己的下拉框类型编辑器来操作控件的属性经常是非常方便的。 定制的类型编辑器不只可以提供更为丰富的设计时辰体验, 而且可能成为用户是否喜欢你的控件的决议要素。

  假设你决议创建你自己的下拉式类型编辑器, 那么它应该遵照与内置的下拉框类型编辑器相相似的形式。 让我们以anchor属性为例。 一种典型的操作该属性的设计时辰用户交互描述如下:

  ·用户选择属性格子中的anchor属性并且点击属性格左边的下拉按钮。

  ·一种良好的图形控件是下拉框, 它可以允许用户使用鼠标点击边缘或者使用箭头键来高亮某个边缘并使用空格键选择/取消选择它。

  ·用户可以经过按下enter键或点击下拉控件的内部来接纳变化。 为了取消这一变化, 用户可以按下esc键。

  下面, 让我们来讨论详细的实现技术。

  VB编程二、实现

  首先, 让我们构建一个resourceimageeditor类型编辑器, 它允许从以后文件系统中选择一个图像文件(就象内置的imageeditor类一样)或者从一个程序集的manifest文件中选择一个图像资源。 而且, 在用户体验方面, 该resourceimageeditor的行为应该相似于系统内置的类型编辑器。 下面是对我们要求的概述:

  1. 当用户附属性格子中选择一个属性时, 该格子就会显示出来—以一个下拉框ui形式显示可以编辑的属性。

  2. 当点击下拉按钮时, 以后程序集中的所有图像资源将显示出来。

  3. 当用户选择一个图像资源项, 相应的图像即可以从程序集中进行加载。

  4. 允许选择一个图像文件, 并且在下拉列表框中的最后一项将标记为“browse. . . ”。 当用户点按“browse. . . ”项, 将显示经典的翻开文件对话框, 用户可以从中选择一个图像文件。

  5.牛尔 经过单击鼠标或使用箭头键高亮某项并按回车键实际选择它从而允许用户从该下拉列表框中选择一项。 这个下拉选择可以经过按下esc键取消。

  resourceimageeditor是一个类型编辑器, 因而它直接或间接地派生自system. drawing. design. uitypeeditor类。 我决议从内置的system. drawing. design. imageeditor类进行派生是由于它已经实现了图像文件选择功用。 也就是说, imageeditor. editvalue实现将显示一个文件翻开对话框以允许用户从文件系统中选择一个图像文件。 然后, 从我的派生类中调用这一功用只需求简单地调用mybase. editvalue即可。

  为了实现上面第一个要求(在属性格子中显示下拉箭头按钮), 我必须重载geteditstyle方法以从uitypeeditoreditstyle枚举中前往适当的常数:

  publicoverloadsoverridesfunctiongeteditstyle(_

  byvalcontextasitypedescriptorcontext)asuitypeeditoreditstyle

  returnuitypeeditoreditstyle. dropdown

  endfunction

  为了显示图像资源列表, 我必须罗列一个给定程序集中的所有资源并且仅在列表中显示图像资源。 为了简化, 我决议使用一种简单的约定:当一个资源名以一个有效图像文件扩展名(. bmp, . jpg, . gif. . . )结束时,

posted on 2011-08-09 15:52  jiyizhen3721  阅读(182)  评论(0编辑  收藏  举报