我使用以下代码转到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
和其他控件
答案 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);
它将完全适用于你想要的女巫