まず、TABキーを送信する理由はありません。Focus
フォーカスしたいテキストボックスに設定するだけです。
OnKeyDown
やりたいことは、Enterキーを無視したいときにフォーカスしているテキストボックスまたはコントロールをリッスンすることです。に設定e.Handled
するtrue
と、キーの押下は無視されます。
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
if (bIgnoreInput)
e.Handled = true;
}
編集:
テキストが変更されたときだけでなく、ボタンを押して検証をトリガーすることをお勧めします(それがあまり明確ではないため、それが実行している場合)。これにより、検証を処理し、ユーザーフィードバック(進行状況バーや待機中のアニメーションなど)を提供できます。
入力がまったく必要ない場合は、コードの処理が完了するまでテキストボックスでに設定Enabled
します。false
コントロールが有効になっていない場合、イベントはトリガーされません。必ず確認してInvokeRequired
くださいInvoke
。
void ValidateInput()
{
SetisValidatingState(true);
System.Threading.Thread workThread = new System.Threading.Thread(delegate()
{
////
// Validate here
////
SetisValidatingState(false);
});
workThread.Start();
}
delegate void SetisValidatingStateDelegate(bool state);
void SetisValidatingState(bool state)
{
if (InvokeRequired)
{
Invoke(new SetisValidatingStateDelegate(SetisValidatingState), new object[] { state });
return;
}
textBox1.AcceptsTabs = textBox2.AcceptsTabs = textBox3.AcceptsTabs = textBox4.AcceptsTabs = !state; // Disable tab while validating = true
progressBar.visible = state; // show progress while validating = true
}