我正在设置SuppressKeyPress = true
用户在 a 中按下 ENTER/RETURN 键MaskedTextBox
以防止通常发出的恼人的哔哔声。这很好用,但是当我清除我的表单时,它MaskedTextBox
不再按预期运行。输入的第一个字符是幻影字符,在输入第二个字符后消失。
例子:
__.___
Set text = "0"
0_.___
User enters text
09.999
User presses ENTER
User presses Save & Next (this clears the form)
Reset text = "0"
0_.___
User enters first 9
09_.___
User enters second 9
0_.9__
如果用户使用 TABSMaskedTextBox
而不是按 ENTER,这可以正常工作(文本输入正确,没有任何奇怪的移位。)我能找到的唯一区别是我正在使用SuppressKeyPress
并且非公共成员中的 flagState 是不同的(当我不做时为 2052,当我做时为SuppressKeyPress
2048。SuppressKeyPress
)
有没有办法在不破坏 BEEP 的情况下防止 BEEPMaskedTextBox
或修复MaskedTextBox
之后SuppressKeyPress
的方法(如果不是所有方法,我已经尝试了大多数MaskedTextBox
本身的方法:refreshText
, refresh
, 等等...)
这是 MaskedTextBox 定义和 KeyDown 方法:
//
// aTextBox
//
this.aTextBox.Location = new System.Drawing.Point(130, 65);
this.aTextBox.Mask = "##.###";
this.aTextBox.Name = "aTextBox";
this.aTextBox.Size = new System.Drawing.Size(50, 20);
this.aTextBox.TabIndex = 3;
this.aTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.general_KeyDown);
this.aTextBox.Leave += new System.EventHandler(this.validate);
general_KeyDown
看起来像这样:
private void general_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
e.SuppressKeyPress = true;
SendKeys.Send("{TAB}");
}
}