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


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



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

     

     

     


     

  • 相关阅读:
    关于表格单元格溢出情况的处理(单行文本溢出或多行文本溢出)
    下拉树的公共插件(手写插件的方法)
    ztree树样式的设计
    Android学习笔记之Intent(2)
    Android学习笔记之Intent(1)
    Ajax
    Android学习笔记之ContentProvider
    Android学习笔记之Broadcast Receiver
    Android学习笔记之Service
    Android学习笔记之Intent
  • 原文地址:https://www.cnblogs.com/SharkXu/p/EnterGoto.html
Copyright © 2011-2022 走看看