2016-10-24 5 views
0

現在、いくつかのコンポーネントで構成されるフィールドの入力を必要とするプログラムを作成しています。私はそれらを独自の部分に分解し、ユーザーが必要な文字を入力すると自動的に移動して、残りのコードを次のテキストボックスに書き込むようにコードを作成したい。これまでプログラムを自動的に次の入力フィールドに移動しようとしました(Windowsフォーム)

私のコードは次のとおりです。

{ 
     InitializeComponent(); 

     if (textBox1.Text.Length == 2) 
      textBox2.Select(); 
      textBox2.Focus(); 


     if (textBox2.Text.Length == 3) 
      textBox3.Select(); 
      textBox3.Focus(); 

     if (textBox3.Text.Length == 2) 
      textBox4.Select(); 
      textBox4.Focus(); 

    } 

私はおそらく間違った場所でこれを持っていると確信しているが、私は、C#、したがって大規模な初心者くさいに新しいです。現時点では、これは動作していないし、大規模な迷惑なので、どんな助けも大いに評価されるだろう。

+2

、助け正しいプラットフォーム(WindowsフォームやWPF)をタグ付けしてください。質問に答えるには、テキストボックスを入力イベントに接続し、値を確認し、必要に応じてフォーカスを変更する必要があります。 – Igor

+0

プラットフォームはWindowsフォーム – acodeoficeandfire

+0

@ Berkayの答えに加えて、必要な順番で 'tabIndex'プロパティを設定することができます:https://msdn.microsoft.com/en-us/library/bd16a8cw%28v=vs。 110%29.aspx?f = 255&MSPPError = -2147217396 – user5226582

答えて

1

フォームのコンストラクタでこれを呼び出すと、コンストラクタのフォームが動作するときに何も起こりません。すべてのテキストボックスの長さが0です。テキストボックスのTextChangedのようなイベントが必要です。次のテキストボックスにフォーカスする必要があるので、テキストが書き込まれた後にします。したがって、このような何か、

private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      if (textBox1.Text.Length == 4) 
      { 
       textBox2.Focus(); 
      } 
      ... 
     } 

ホープ

関連する問題