C# 将焦点设置为另一个控件
在C#windows应用程序(C#2005)中,当我在textbox1中按ENTER键时,我想将焦点从一个textbox1设置到另一个textbox2,处理C# 将焦点设置为另一个控件,c#,C#,在C#windows应用程序(C#2005)中,当我在textbox1中按ENTER键时,我想将焦点从一个textbox1设置到另一个textbox2,处理textbox1的or事件,然后首先调用textbox2.focus(),您必须将表单的KeyPreview属性设置为true。然后,您必须重写表单的OnKeyDown方法,并创建如下案例: if(e.KeyCode == Keys.Enter) { Control ctlNext = this.GetNextControl(th
textbox1
的or事件,然后首先调用textbox2.focus(),您必须将表单的KeyPreview属性设置为true。然后,您必须重写表单的OnKeyDown方法,并创建如下案例:
if(e.KeyCode == Keys.Enter)
{
Control ctlNext = this.GetNextControl(this.ActiveControl, true);
ctlNext.Focus();
}
else
{
base.OnKeyDown(e);
}
请注意,此代码适用于窗体上的每个控件,并将焦点移动到下一个控件。如果您只希望此代码适用于文本框,可以添加如下复选框:
if(this.ActiveControl is TextBox)
{
...
}
将此添加到您的表单中
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Control NextControl = this.GetNextControl(this.ActiveControl, true);
while (!NextControl.TabStop || !NextControl.Enabled || !NextControl.Visible)
{
NextControl=this.GetNextControl(NextControl, true);
}
NextControl.Focus();
}
else
{
base.OnKeyDown(e);
}
}
记住在某个地方也要设置e.SuppressKeyPress=true,否则回车键仍会注册到其他控件(例如表单的AcceptButton)。