zoukankan      html  css  js  c++  java
  • 给所有的Control加两个属性,实现回车键自动跳转到下一个控件

    最近一个朋友要做一个操作非常方便的Windows应用程序,就是希望通过按回车键或者上下键,在输入项之间自动跳转,国人都不习惯
    使用Tab/Shift Tab在输入项之间的跳转。我之前也使用了一些别的方法,如:首先将需要跳转的输入项放置到一个集合对象ArrayList里;
    然后设置Form的PreKeyView为True;最后 给Form添加一个KeyDown事件处理程序。虽然是一个办法。但总觉得不够专业。
    前不久在WWW.CodeProject.COM看了一个老外写的一篇文章http://www.codeproject.com/cs/menu/menuimage.asp,是关于如何做一个带
    图标的菜单的,大部分人写这样的程序都是重写MenuItem,重载MenuItme的OnDrawItem和OnMeasureItme方法,可是这位老大独树一帜,
    去做了一个叫MenuImage的类,它实现了System.ComponentModel.IExtenderProvider 接口,在设计期给MenuItem扩展了一个属性
    MenuImage。如下图:


    这篇文章给了我极大的启发,决定做一个给所有的Control“扩展” 两个属性NextControl和PreviousControl,这样按回车或者上下键就可以跳转了。
    首先创建一个类ControlFocus
    [ProvideProperty( "NextControl", typeof(Component)) ]
    [ProvideProperty( "PreviousControl", typeof(Component)) ]
    public class ControlFocus:Component, IExtenderProvider
    第一行和第二行是什么意思呢,就是这个ExtenderProvider会给别的Control扩展两个属性NextControl和PreviousControl
    同时要求在ControlFocus类里面包含下面四个方法:
    GetNextControl/SetNextControl/GetPreviousControl/SetPreviousControl
    另外ControlFocus这个ExtenderProvider必须实现IExtenderProvider的CanExtend方法。
    下面就是ControlFocus类的全部源代码:

    ControlFocus


    其次创建一个示例窗口.如下:



    程序的全部源代码,请下载:

     

     

     


     

  • 相关阅读:
    bzoj 4260 Codechef REBXOR——trie树
    bzoj 2238 Mst——树链剖分
    bzoj 2836 魔法树——树链剖分
    CF 888E Maximum Subsequence——折半搜索
    bzoj 4289 PA2012 Tax——构图
    bzoj 4398 福慧双修——二进制分组
    bzoj1116 [POI2008]CLO——并查集找环
    bzoj4241 历史研究——分块
    bzoj4373 算术天才⑨与等差数列——线段树+set
    bzoj4034 [HAOI2015]树上操作——树链剖分
  • 原文地址:https://www.cnblogs.com/SharkXu/p/EnterGoto.html
Copyright © 2011-2022 走看看