2007-03-28 09:37 2773人阅读 评论(0) 收藏 举报
 分类:
C#(5) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

方法1:
这个方法比较烦琐,就是为每个文本框的KeyPress增加:

if (e.KeyChar == '/r')
{
    SendKeys.Send("{TAB}");
}


方法2:
在方法1的基础上,还有一个比较聪明一些的做法,就是在窗体加载的时候为所有的文本框添加相同的按键事件处理,做法如下:
在Form_Load中添加AddEnterKeyDownEvent(this); 。 如:

        private void Form1_Load(object sender, EventArgs e)
        {
            //....
            AddEnterKeyDownEvent(this);
        }

函数AddEnterKeyDownEvent可以查找窗体中所有的TextBox和ComboBox类型控件并添加按键事件。代码如下:

        private void AddEnterKeyDownEvent(Control owner)
        {
            foreach (Control ctrl in owner.Controls)
            {
                if ((ctrl is TextBox) || (ctrl is ComboBox)) 
                {
                    //为TextBox或者ComboBox类型控件添加按键事件
                    ctrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.EnterKeyDown);
                }
                else if((ctrl is GroupBox ) || (ctrl is Panel)) 
                {
                    //为GroupBox和Panel中的TextBox或者ComboBox类型控件添加
                    AddEnterKeyDownEvent(ctrl);
                }
            }
        }

对应的EnterKeyDown事件

private void EnterKeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 

    if(e.KeyCode==Keys.Enter) 
    { 
        SendKeys.Send("{TAB}"); 
    } 
}

方法3:
这个方法相对简单些:
把Form的KeyPreView设为true,然后在Form的KeyPress中增加下列代码即可:

if (e.KeyChar == ' /r')
{
    this.SelectNextControl(this.ActiveControl, true, true, true, true);
    //SendKeys.Send("{TAB}");//也可以使用这个代替SelectNextControl
}

这样会有个问题,按一次回车会电脑都会发出声音(DropDown样式的ComboBox),如果要去掉这个声音,就添加一句e.Handled = true;

if (e.KeyChar == '/r ')// 
{
    e.Handled = true;//通知系统,该KeyPress事件已经处理过

this.SelectNextControl(this.ActiveControl, true, true, true, true);
    //SendKeys.Send("{Tab}");  
}

嘿嘿,到这里好像偶尔会有问题,也许我们的KeyPress事件处理主要是将TextBox控件中的回车当成Tab处理,但碰到Button控件,比如“确定”按钮,那么Button的Click事件可能会失灵。我就碰到这样的情况,但在我给Button添加一个空的KeyPress事件处理函数后,这个问题又不存在了,然后我又将Button的KeyPress事件处理函数清除,Button的Click事件还正常工作,搞不懂是什么原因导致Button的Click事件失灵的,又是怎么活过来的!!

C#中Windows通用的回车转Tab方法的更多相关文章

  1. ubuntu如何实现访问实际网络中windows共享文件夹

    方法一: 首先在建立一个挂载目录. sudo mkdir /mnt/share 然后就把共享目录持载进去. 服务器:192.168.6.84 共享名:gg 用户名:administrator 密 码: ...

  2. Windows 通用应用尝试开发 “51单片机汇编”总结

    一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几 ...

  3. [C#]Winform下回车或Tab键自动切换下一个控件焦点

    满足用户体验,在数据录入时,能在输入完一个信息后通过回车或Tab键自动的切换到下一个控件(字段). 在界面控件设计时,默认可以通过设置控件的TabIndex来实现.但在布局调整时或者是对输入的内容有选 ...

  4. Windows通用应用平台

    什么是 UWP? 很多程序员都有一个梦想:希望自己开发的软件能够轻而易举的在所有平台上运行,而不是把同样的需求,用不同的技术.工具重新开发才能够运行在所有平台上.这就是跨平台,很多软件从业者都在为这个 ...

  5. Notepad++中Windows,Unix,Mac三种格式

    Notepad++中Windows,Unix,Mac三种格式之间的转换 http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htm ...

  6. 在Spring-Boot中实现通用Auth认证的几种方式

    code[class*="language-"], pre[class*="language-"] { background-color: #fdfdfd; - ...

  7. jQuery实现回车绑定Tab事件

    有时候我们希望回车事件绑定的是键盘的Tab事件.我的第一思路就是切换事件的keyCode,比如键盘事件按下的keyCode如果是13,我们将keyCode改为9.但是在实际编程中却未能实现此效果.于是 ...

  8. unigui回车代替TAB

    unigui回车代替TAB 在业务系统中常常使用回车键(Enter)替代Tab键完成焦点跳转,在uniGUI下,可以不用代码,直接使用TUniForm的NavigateKeys进行设置: 其中Next ...

  9. 在 Azure 中创建通用 VM 的托管映像

    可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 VM 中创建托管映像资源. 然后可以使用该映像创建多个 VM. 使用 Sysprep 通用化 Windows VM Sysprep 将删除所有个人帐 ...

随机推荐

  1. applicationCache

    <html manifest="/m.appcache"> window.applicationCache.onupdateready = function (e) { ...

  2. keystone WSGI流程

    作为OpenStack两种基本的通信方式(RESTful API与消息总线)之中的一个.理解RESTful API的设计思路和运行过程,有助于我们对OpenStack有更好的理解.RESTful仅仅是 ...

  3. atitit.印度教与java宗教的特点与观念对比 attilax总结

    atitit.印度教与java宗教的特点与观念对比 attilax总结 1. Java就是一种宗教 1 2. Java的教义思想,社区理念,价值观念 2 2.1. 教学语言,类似与印度教的祭祀万能 2 ...

  4. vivado编译出错 [Synth 8-729] [Synth 8-787]

    http://www.cnblogs.com/pejoicen   打开vivado工程后,发现右上角如下图所示: 重新编译这两个ip核后,对整个工程synthesis,工程报错 [Synth 8-7 ...

  5. file's owner以及outlet与连线的理解

    转自:http://www.cnblogs.com/martin1009/archive/2012/06/01/2531028.html xib文件本身可以看做是一个xml,app启动的时候会根据xm ...

  6. Android Studio编译的时候提示Gradle无法下载的解决方案

    首先,打开android studio项目 找到项目目录gradle\wrapper\gradle-wrapper.properties这个文件.内容如下:#Wed Apr 10 15:27:10 P ...

  7. linux学习笔记5--命令rmdir和rm

    昨天学习了创建目录的命令mkdir ,接下来学习一下linux中删除文件和目录的命令: rm命令. rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根 ...

  8. Tomcat 下启用 https:// 访问

    步骤: 1 创建 .keystore 文件 JDK中自带了keytool工具用于生成证书文件 keytool工具在$JAVA_HOME/bin 目录下可以使用命令 keytool -genkey -a ...

  9. 查看网络连接数目(解决TIME_WAIT过多造成的问题_转)

      转自:解决TIME_WAIT过多造成的问题 (eroswang的csdn) #netstat -n | awk '/^tcp/ {++S[$NF]} END { for(a in S) print ...

  10. IPC之共享内存

    man 7 shm_overview shm_overview - Overview of POSIX shared memory. 同样,SystemV实现的共享内存是旧的机制,但应用广泛:Posi ...