[英]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.