テキストボックスのKeyPressイベントでメソッドを実行していますが、メソッドが実行されていますの前に、のキーが実際に入力されます。アクションキーが入力された後のキー入力メソッド
私がKeyUpを使用している場合、私にとってはあまり役に立ちませんが、ソフトキーと標準文字のKeyUpトリガーを除いて、私が探している動作が得られます。
キーを入力した後にKeyPressを実行させることはできますか?または、簡単にソフトキーを無視するKeyUpを取得できますか?
テキストボックスのKeyPressイベントでメソッドを実行していますが、メソッドが実行されていますの前に、のキーが実際に入力されます。アクションキーが入力された後のキー入力メソッド
私がKeyUpを使用している場合、私にとってはあまり役に立ちませんが、ソフトキーと標準文字のKeyUpトリガーを除いて、私が探している動作が得られます。
キーを入力した後にKeyPressを実行させることはできますか?または、簡単にソフトキーを無視するKeyUpを取得できますか?
まあ、KeyPressイベントでkeycharを覚えておいて、思い出したcharを使ってKeyUpで必要なロジックをすべて実行できます。
keypressイベントでは、textbox.Text
とe.KeyChar
を新しい文字列に連結し、この新しい文字列を処理できます。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string newString = textBox1.Text + e.KeyChar.ToString();
// Process newString
// If after processing you do not wish to undo the typed letter do
// e.Handled = true;
}
ええと、キーが押されたときにテキストボックステキストの中央にカーソルを置くとどうなりますか? – arbiter
また、あなたのtextbox
コントロールからTextChanged
イベントを試すことができます。コードを
使用keyUpイベント:
private void textBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
//only do things when an alphabetical character is typed
if ((e.KeyCode >= Keys.a) && (e.KeyCode <= key.z) ||
(e.KeyCode >= Keys.A) && (e.KeyCode <= key.Z))
{
// do your thing
}
}
あなたはofcourseのものような他の文字を確認することができます。
KeyUpが起動されると、テキストボックスにはすでに押された文字が含まれています。 KeyPressでテキストボックス文字列とkeycharを連結して、コードが正しい値を処理できるとします。 – ChristianLinnell
まあ、これは可能ですが、より難しいと思う:カーソルがテキストの真ん中(charを挿入する必要がある)、テキストボックス(charが選択を置き換える)バックスペースなど)。たぶん、あなたの質問を更新し、あなたが達成したい最終結果を教えてください。 – arbiter