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


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



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

     

     

     


     

  • 相关阅读:
    常用JSR-303数据校验
    SpringBoot配置文件及自动配置原理
    SpringBoot自动装配原理
    Centos安装TensorFlow和Keras
    Batch梯度下降
    梯度下降法的注意点
    读取流量
    Linux开机启动服务
    Shell分割字符得到数组
    Linux下无图形界面安装Matlab
  • 原文地址:https://www.cnblogs.com/SharkXu/p/EnterGoto.html
Copyright © 2011-2022 走看看