我想检测何时在textBox中按Tab键并将下一个文本框聚焦在面板中。
我尝试过keyPressed方法和keyDown方法。但是当我运行程序并调试时,按Tab键时这些方法不会调用。 这是我的代码。
private void textBoxName_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
textBoxUsername.Focus();
}
}
private void textBoxName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar==(char)Keys.Tab)
{
textBoxUsername.Focus();
}
}
请纠正我。谢谢。
答案 0 :(得分:10)
为什么你需要这种并发症? WinForms会自动为您完成。您只需设置正确的Tab键顺序。
答案 1 :(得分:6)
转到文本框的属性并指定tabindex的正确顺序
答案 2 :(得分:3)
您应该使用tabOrder。
答案 3 :(得分:1)
您想要“离开”活动。我把它扔进了默认的C#WinForms应用程序:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
/*
... misc housekeeping ...
*/
private void OnLeave(object sender, EventArgs e)
{
lblMsg.Text = "left field 1";
}
private void OnLeave2(object sender, EventArgs e)
{
lblMsg.Text = "left field 2";
}
}
}
它可以像你期望的那样工作。显然你可以在Leave()
处理程序中做任何你想做的事情,包括强调其他地方的重点,但要注意不要混淆用户......
答案 4 :(得分:1)
答案 5 :(得分:0)
如果textBoxName在按下TAB键时有焦点,则只触发“KeyDown”事件。 您只需设置正确的Tab键顺序。
答案 6 :(得分:0)
如果您正在处理Panel中的文本框,设置正确的选项卡索引应该可以完美地完成工作。但是,如果你正在处理来自其他专家组的其他文本框说:
panel1有textbox1
panel2有textbox2
panel3有textbox3
这是您需要做的事情:
设置所有文本框的TabStop = False
property
。默认情况下,此项设置为True。
为每个面板设置正确的TabIndex
,例如
panel1 TabIndex = 0;
panel2 TabIndex = 1;
panel3 TabIndex = 2;
然后尝试此代码
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode.Equals(Keys.Tab))
this.textBox3.Focus();
}