C# 文本框焦点
C# Textbox Focus
在 windows 表单 c# 应用程序中,我有两个文本框控件。
我将 tabindex 1 设置为第一个控件
我将 tabindex 2 设置为 secondo control
当我在第一个控件中按下Tab键时,我需要做一些检查操作。
我尝试使用此代码拦截制表键
control1__KeyPress(...)
{
if (e.KeyChar == (char)Keys.Tab)
{
....
}
}
但是事件没有触发。
我试着做成
control1__KeyDown(...)
{
}
但该事件也未触发。
如何在第二个控件获得焦点之前拦截 Tab 键?
谢谢
正如我在评论中所说,您应该根据您的要求使用适当的事件处理程序。如果您的意图是在控件失去焦点时收到警报,则有一个 Validating event that could help if your intent is just to validate user input. There is a Leave 事件。
如果您真的只想处理 TAB 键,那么您应该像本例中那样重写 ProcessCmdKey
public class Form1 : System.Windows.Forms.Form
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData )
{
if( keyData == Keys.Tab)
{
// This method will be called for every control in your form
// so probably you need to add some checking on the Handle
// of the control that originates the call
if(msg.Hwnd == yourTextBox.Handle)
{
ExecuteYourTabProcessinLogicHere();
// Returning TRUE here halts the normal behavior of the
// TAB key, you could change this based on the result
// of your logic
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
但是,我应该警告您,乱用 TAB 键可能会让您的用户感到非常不安,因为他们希望此键具有预先定义好的行为
在 windows 表单 c# 应用程序中,我有两个文本框控件。
我将 tabindex 1 设置为第一个控件 我将 tabindex 2 设置为 secondo control
当我在第一个控件中按下Tab键时,我需要做一些检查操作。
我尝试使用此代码拦截制表键
control1__KeyPress(...)
{
if (e.KeyChar == (char)Keys.Tab)
{
....
}
}
但是事件没有触发。
我试着做成
control1__KeyDown(...)
{
}
但该事件也未触发。
如何在第二个控件获得焦点之前拦截 Tab 键?
谢谢
正如我在评论中所说,您应该根据您的要求使用适当的事件处理程序。如果您的意图是在控件失去焦点时收到警报,则有一个 Validating event that could help if your intent is just to validate user input. There is a Leave 事件。
如果您真的只想处理 TAB 键,那么您应该像本例中那样重写 ProcessCmdKey
public class Form1 : System.Windows.Forms.Form
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData )
{
if( keyData == Keys.Tab)
{
// This method will be called for every control in your form
// so probably you need to add some checking on the Handle
// of the control that originates the call
if(msg.Hwnd == yourTextBox.Handle)
{
ExecuteYourTabProcessinLogicHere();
// Returning TRUE here halts the normal behavior of the
// TAB key, you could change this based on the result
// of your logic
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
但是,我应该警告您,乱用 TAB 键可能会让您的用户感到非常不安,因为他们希望此键具有预先定义好的行为