MaskedTextBox
のENTER/RETURNキーを押して、通常行われる迷惑なビープ音を防ぐために、SuppressKeyPress = true
を設定しています。これは素晴らしいですが、私のフォームをクリアすると、MaskedTextBox
はもはや期待どおりに動作しません。入力された最初の文字は、2番目の文字が入力された後に消えるファントム文字です。KeyDownイベントでSuppressKeyPressを使用すると、MaskedTextBoxesが破損しますか?
例:
__.___
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__
代わりに押すのMaskedTextBox
のうち、ユーザTABSは、入力した場合、これは正常に動作します(テキストは任意の奇数シフトせずに正しく入力されている。)私は見つけることができる唯一の違いは、そのI 「非公共のメンバーでflagStateが異なることSuppressKeyPress
を使用してMと(私はSuppressKeyPress
を行うと、私はSuppressKeyPress
2048ないとき2052。)
MaskedTextBox
や方法を壊すことなく、BEEPを防止するためのいずれかの方法はありますを修正するSuppressKeyPress
後(私が試したほとんどの場合ではないMaskedTextBox
自体は上のすべてのメソッド:refreshText
、refresh
、等...)ここで
//
// 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}");
}
}
それは価値があるので、私はそれをreproしました。 OPのコードは、次のキーを押すとスペース(Chr(32))が挿入されます。あなたの投稿はひどくハッキーな回答を投稿することから私を救った。 +1。 – LarsTech
これはうまくいった!どうもありがとうございました。 SendKeys.Key( "{TAB}")を使用することには何らかの欠点がありますか? GetNextControlを実行するだけでは、フォーム上のコントロールの一部がアクティブでないため、面倒です。 – Brian
"アクティブ"はあまり意味がありません。 GetNextControlは無効なコントロールを扱います。あなたが好むものを使用してください。 –