私はRichTextBox(rtb_inputField)を持っています。このRTBに何かを入力してEnterキーを押すと、入力した文字列がサーバーに送信されます。その後、同じ文字列をrtb_inputFieldに戻して、プログラムで選択します(この方法では、ユーザーは同じデータを簡単に入力することができます。または、もう一度Enterキーを押すことで別の文字列を送信できます)。RichTextBox入力をバイパスすることは可能ですか
ここで私がしたいのは、NumLockがロックされていて、数字キー(0〜9)のいずれかを押すと、rtb_inputFieldを完全にバイパスしたいと思っています。バイパスとは、RTBに数値を入力せず、代わりにこれらの数値を直接処理することです。 (私はこの方法でサーバーにデータをすばやく送信する予定ですが、ユーザーがRTBに書き込んだ最後のコマンドは変更されません)。
NumLockがロックされていない場合は、数値をRTBに挿入します。
これは可能ですか?ここで
は私が現時点で持っているコードです:(あなたが唯一のこの質問に対して関連性のものを見るように私はそれを変更しました。)private List<Keys> numPadList = new List<Keys>();
private void populateNumPadList() {
numPadList.Add(Keys.NumPad0);
numPadList.Add(Keys.NumPad1);
numPadList.Add(Keys.NumPad2);
numPadList.Add(Keys.NumPad3);
numPadList.Add(Keys.NumPad4);
numPadList.Add(Keys.NumPad5);
numPadList.Add(Keys.NumPad6);
numPadList.Add(Keys.NumPad7);
numPadList.Add(Keys.NumPad8);
numPadList.Add(Keys.NumPad9);
}
private void rtb_inputField_KeyDown(object sender, KeyEventArgs e) {
if ((numPadList.Contains(e.KeyData)) && (IsKeyLocked(Keys.NumLock))) {
//The user pressed a numpad key
MessageBox.Show("You pressed: " + e.KeyData.ToString());
e.Handled = true;
}
}
private void rtb_inputField_KeyUp(object sender, KeyEventArgs e) {
RichTextBox inputField = (RichTextBox)sender;
string userInput = inputField.Text.Trim();
if ((e.KeyData == Keys.Enter) && (sender == rtb_inputField)) {
if (client.Connected) {
macroString = runInputThroughMacroDictionary(userInput);
//do stuff..
writer.WriteLine(macroString);
}
}
//lots of other stuff..
}
私は感覚で作品を持ってこのコード:それだけのトリガーNumLockがロックされている場合、MessageBoxはnumKeyを押したことを通知します。しかし、それは私が望むようにRichTextBoxをバイパスしません。
RTBを無効にすることはできません。両方をサーバーに送信する手段として使用するためです。 RTBはデータを送信する「洗練された、しかし遅い」方法ですが、数字パッドは非常に基本的なクイックコマンドしか送信できません。 –