NextControl使用EnterBox和Previous在TextBox中使用Backspace进行聚焦

时间:2013-07-25 06:13:15

标签: c# backspace

我使用以下代码转到windows窗体中的next和previous控件

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和其他控件

3 个答案:

答案 0 :(得分:1)

另一个更新,可能不太好,但有效。我建议创建一个方法:

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条件中。

您正在使用的事件检查是否按了表单上的键而不是文本框

答案 1 :(得分:0)

大多数人在赢取形式时使用反向标签。但如果你还想通过后退按钮来做。

这种鳕鱼会帮助你。而且你永远不会失去你的恐惧。

if(e.KeyCode==Keys.Back)
            {
                if(textBox1.Text.Trim().Length==0){
                this.SelectNextControl(this.ActiveControl, false, true, true, true);
                }
            }
很高兴为您提供帮助。欢迎致谢

答案 2 :(得分:0)

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

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

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

  TextBoxBackEvent(textbox,this);

它将完全适用于你想要的女巫