博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

变Enter键为Tab键 实现焦点转移

Posted on 2010-09-07 17:16  moss_tan_jun  阅读(513)  评论(0编辑  收藏  举报
 /// <summary>
   
/// 窗体控件控制相关的方法
   
/// </summary>
    public class ControlTools
    {
       
private Form frm;

       
public ControlTools(Form frm)
        {
           
this.frm = frm;
        }

       
/// <summary>
       
/// 窗体上所有子控件的回车设成Tab
       
/// </summary>
        public void EnterToTab()
        {
            frm.KeyPreview
= true;

            frm.KeyPress
+= new KeyPressEventHandler(frm_KeyPress);
        }
       
/// <summary>
       
/// 注册窗体的KeyPress事件
       
/// </summary>
       
/// <param name="sender"></param>
       
/// <param name="e"></param>
        private void frm_KeyPress(object sender, KeyPressEventArgs e)
        {
           
if (e.KeyChar == (char)Keys.Enter)
            {
                frm.SelectNextControl(frm.ActiveControl,
true, true, true, true);
            }
        }

       
/// <summary>
       
/// 把某一个控件的所有子控件(TextBox ComboBox)的回车设成Tab
       
/// </summary>
       
/// <param name="groupControl">容器控件</param>
        public void EnterToTab(Control groupControl)
        {
           
foreach (Control control in groupControl.Controls)
            {
               
if (control is TextBox || control is ComboBox)
                    control.KeyPress
+= new KeyPressEventHandler(control_KeyPress);
            }
        }

       
/// <summary>
       
/// 注册控件的KeyPress事件
       
/// </summary>
       
/// <param name="sender"></param>
       
/// <param name="e"></param>
        private void control_KeyPress(object sender, KeyPressEventArgs e)
        {
           
if (e.KeyChar == 13)
            {
                SendKeys.Send(
"{Tab}");
                e.Handled
= false;
            }
        }

    }