按Tab键不会离开TextBox

时间:2015-04-08 08:58:49

标签: c# visual-studio visual-studio-2012

我有一个继承自TextBox的自定义控件。我在其中添加了以下代码:

public enum TextType : byte
{
    AlphaNumeric = 0,
    Numeric,
    Currency,
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
    base.OnKeyPress(e);

    if (this.textType == TextType.Numeric)
    {
        e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
    }

    else if (this.textType == TextType.Currency)
    {
        e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != '.' && e.KeyChar != ',';
    }
}

键入时,上面的代码正确执行。但是,我有一个奇怪的问题:

当我进入控件并只按Tab键(控件仍为空)时,光标移动到下一个控件。但是当我输入一些文本,清除文本并按Tab键时,光标不会移动到下一个控件。

我不相信上面的代码就是问题所在。还有什么呢?

修改

控件绑定到数据源时会出现问题。当控件未绑定时,上述行为不会发生。

这是否正常,是否有解决方法?

3 个答案:

答案 0 :(得分:0)

可能验证失败,您是否有机会处理任何验证事件?

或者按键可能会被困在更高的位置,当您在测试场景中按Tab键时,代码是否会在OnKeyPress中断?

答案 1 :(得分:0)

解决问题的两种方法:

  1. 将每个控件CausesValidation属性设置为false
    1. 将表单的AutoValidate属性设置为EnableAllowFocusChange

答案 2 :(得分:0)

这是因为您尝试插入的数据类型不能存储在数据源中。例如:UI值="测试"(字符串),数据源类型= int。