• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#中Windows通用的回车转Tab方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 
标签: windowsc#textboxbuttondropdownobject
 分类:

方法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事件失灵的,又是怎么活过来的!!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#操作Excel开发报表系列整理发布时间:2022-07-10
下一篇:
书C#企业应用开发艺术:CSLA.NET框架开发实战的评论发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap