2012-01-13 8 views
0

私はTextBoxとボタンを持っています。 TextBoxでテキストを入力して、Enterをクリックして、自分のボタンを押すことができます。ボタンを押すと、テキストボックスにリダイレクトすることができます。button1.Focus();TextBoxにテキストを入力し、ボタンをクリックして戻ることができるようにする方法は?

ここで、テキストを入力してEnterキーを押しても何も起こりません。タブを使ってボタンに切り替えることもできますが、代わりにEnterキーを押すだけでよいのだろうかと思います。

アイデア?

答えて

2

フォームのプロパティで、ボタンをAcceptButtonプロパティの値として設定します。

1

テキストボックスにKeyPressedイベントを追加できます。このイベントの内部では、押されたキーが入力されているかどうかをチェックし、押されている場合は、ボタンのクリックイベントを呼び出します。

2

簡単な解決策は次のようになります。

private void button1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("Click!"); 
} 

private void textBox1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
     button1_Click(textBox1, new EventArgs()); 
} 

あなたが複数の場所でこれを使用している場合は、私は、この動作をカプセル化するために、TextBoxButtonを含むユーザーコントロールを作成することをお勧めしたいです。

1

私はこの方法はあなたの問題のために非常に賢いルーチンだと思います。この手順では、Tabキーを押しても確認できます。これは、から直接切り取ら方法である:

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.isinputkey.aspx

あなたは単にKey.EnterマイクロソフトサンプルでKeys.Tabを変更することで、右にしています。このテキストボックスをAutoCompleteルーチンと組み合わせて使用​​すると、コンストラクタの外側またはコンストラクタのオーバーロード内でインスタンス化すると便利です。テキストボックスのインスタンス化は次のようになります。 ReturnTextBox returntextbox = new ReturnTextBox();

using System.Windows.Forms; 

public class Form1 : Form 
{ 
    public Form1() 
    { 
     FlowLayoutPanel panel = new FlowLayoutPanel(); 

     ReturnTextBox returntextbox = new ReturnTextBox(); 
     returntextbox.Text = "returntextbox"; 
     panel.Controls.Add(returntextbox); 

     TextBox textBox1 = new TextBox(); 
     textBox1.Text = "Normal TextBox"; 
     panel.Controls.Add(textBox1); 

     this.Controls.Add(panel); 
    } 
} 

class ReturnTextBox : TextBox 
{ 
    protected override bool IsInputKey(Keys keyData) 
    { 
     if (keyData == Keys.Enter) 
     { 
      return true; 
     } 
     else 
     { 
      return base.IsInputKey(keyData); 
     } 
    } 

    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.KeyData == Keys.Enter) 
     { 
      this.SelectedText = " ";     
     } 
     else 
     { 
      base.OnKeyDown(e); 
     } 
    } 
} 
関連する問題