在文本框中使用Enter控制下一个焦点,使用Backspace控制上一个焦点

本文关键字:焦点 控制 文本 使用 Backspace 上一个 下一个 控制下 Enter | 更新日期: 2023-09-27 18:24:44

我使用以下代码在窗口窗体中转到下一个和上一个控件

if (e.KeyCode == Keys.Enter)//Next
{
    this.SelectNextControl(this.ActiveControl, true, true, true, true);
}
if (e.KeyCode == Keys.Back)//Previous
{
    this.SelectNextControl(this.ActiveControl, false, true, true, true);
}

中的问题

if (e.KeyCode == Keys.Back)

如果当前控件是TextBox,并且用户尝试使用退格键键入和删除一个单词,那么这一次将起作用,并将焦点设置为下一个控件。

当文本框具有某些值时,如何防止此事件?它应该适用于ComboBox和其他控件

在文本框中使用Enter控制下一个焦点,使用Backspace控制上一个焦点

另一个更新,可能没有那么好,但有效。我建议创建一种方法:

public void checkKey(object sender)
{
    KeyEventArgs a = new KeyEventArgs(Keys.Back);
    if (sender.GetType().Name == "TextBox")
    {
        TextBox tb = (TextBox)sender;
        if ((a.KeyCode == Keys.Back && String.IsNullOrWhiteSpace(tb.Text)))
        {
            this.SelectNextControl(this.ActiveControl, false, true, true, true);
        }
    }
}

然后在所有文本框上TextChanged事件调用checkKey(sender);

如果需要添加控件,只需在If条件中添加即可。

您正在使用的事件检查是否按下了窗体上的键,而不是文本框上的键

大多数人在获胜形式中使用反向选项卡。但如果你仍然想按后退按钮。

这鳕鱼对你有帮助。而且你永远不会失去你最爱的炭。

if(e.KeyCode==Keys.Back)
            {
                if(textBox1.Text.Trim().Length==0){
                this.SelectNextControl(this.ActiveControl, false, true, true, true);
                }
            }

我很高兴能帮助你。欢迎您的感谢

好的,然后首先创建一个新的函数

public TextBoxBackEvent(TextBox tb,Form form){
               if(tb.Text.Trim().Length==0){
                form.SelectNextControl(form, false, true, true, true);
}

现在在应用程序中的任何位置使用此功能

  TextBoxBackEvent(textbox,this);

它将与您想要的完全一样工作