繁体   English   中英

VB 掩码文本框丢失数字

[英]VB Masked Textbox Loses Digit

我在 VB.NET 中有一个屏蔽文本框来输入时间值。 我试过 90:00、00:00 和 ##:## 的面具。 第一次在框中输入值时,输入正常。 我后来清除了文字

mskTime.Text = ""

我也试过

mskTime.Clear()
mskTime.ResetText()

问题是在清除文本并输入新时间后,键入的第一个字符被删除。 更准确地说,当我添加时间 12:34 时,我输入 1,它出现在第一个字符槽中。 然后我按 2,1 消失,2 出现在第二个字符槽中。 当您再次键入以修复它时,该字符不会消失。

有没有人看到这个问题或知道为什么第一个字符消失?

发现问题:

我有一个 KeyDown 函数来处理用户在时间字段中按下 Enter 键:

    If e.KeyCode = Keys.Enter Then
        Schedule()
        e.SuppressKeyPress = True
    End If

注释掉

e.SuppressKeyPress = True 

解决了这个问题。 我最初使用它是为了防止 Windows 在每次按下 Enter 时发出叮当声。

我在 C# 中遇到了完全相同的问题。 在以编程方式清除MaskedTextBox之前,输入工作正常。 之后,在输入第二个字符后,删除在其中一个MaskedTextBoxes输入的第一个字符。 结果发现问题出在KeyDown事件中。 我在那里等待Enter -Key,做了一些事情并清除了TextBoxes 之后,问题出现了。

我现在通过用KeyPress -Event 替换KeyDown -Event 来解决它。

这是我最终用来捕捉 Enter 键并移动到下一个字段的方法,当我回到它时不会搞砸蒙版的文本框。 道格拉斯

    private void TxtLocID_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Enter)
        {
            e.Handled = true;
            SendKeys.Send("{Tab}");
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM