使用按Tab键阻止用户退出`UserControl`

时间:2014-07-22 22:31:21

标签: c# user-controls tabstop

我有一个UserControl,其中包含一个按钮和一个文本框。用户应该使用eighter填充文本框并单击按钮 - 以便将数据发送到表单并隐藏用户控件,或者按文本框上的Escape - 以便表单知道用户已取消进度。

问题在于,当用户按下文本框上的选项卡时,用户控件将被保留(之后隐藏 - 由于在离开时隐藏用户控件的策略),因此数据更快地发送到表单,用户也没有取消进展。

所有用户控件,文本框和内部按钮都将TabStop设置为false,但用户仍然可以通过按Tab键返回到表单。

如何阻止此用户控件上的标签功能?我想制定规则:点击按钮或按Escape,没有标签失控,这就是它。

2 个答案:

答案 0 :(得分:0)

在表单中的所有其他控件上将TabStop设置为false,以便在选项卡上保留焦点。否则,吞下OnKeyDown或OnKeyPress事件中的按键。单击Tab键并阻止其进一步处理:capture key presses

答案 1 :(得分:0)

使用用户控件中的验证方法:

public partial class UserControl1 : UserControl {

  public UserControl1() {
    InitializeComponent();
  }

  protected override void OnValidating(CancelEventArgs e) {
    e.Cancel = (textBox1.Text.Trim() == String.Empty);
    base.OnValidating(e);
  }
}