2009-07-02 17 views
0

テキストボックスのKeyPressイベントでメソッドを実行していますが、メソッドが実行されていますの前に、のキーが実際に入力されます。アクションキーが入力された後のキー入力メソッド

私がKeyUpを使用している場合、私にとってはあまり役に立ちませんが、ソフトキーと標準文字のKeyUpトリガーを除いて、私が探している動作が得られます。

キーを入力した後にKeyPressを実行させることはできますか?または、簡単にソフトキーを無視するKeyUpを取得できますか?

答えて

1

まあ、KeyPressイベントでkeycharを覚えておいて、思い出したcharを使ってKeyUpで必要なロジックをすべて実行できます。

+0

KeyUpが起動されると、テキストボックスにはすでに押された文字が含まれています。 KeyPressでテキストボックス文字列とkeycharを連結して、コードが正しい値を処理できるとします。 – ChristianLinnell

+1

まあ、これは可能ですが、より難しいと思う:カーソルがテキストの真ん中(charを挿入する必要がある)、テキストボックス(charが選択を置き換える)バックスペースなど)。たぶん、あなたの質問を更新し、あなたが達成したい最終結果を教えてください。 – arbiter

0

keypressイベントでは、textbox.Texte.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; 
} 
+2

ええと、キーが押されたときにテキストボックステキストの中央にカーソルを置くとどうなりますか? – arbiter

0

また、あなたのtextboxコントロールからTextChangedイベントを試すことができます。コードを

0

使用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のものような他の文字を確認することができます。

関連する問題