2014-07-08 2 views
1

양식 중 하나를 입력 상자에 입력해야하는 활성화 마법사가 있습니다.텍스트 상자에 키를 입력하여 자동으로 다음 상자로 이동

사용자가 전체 키를 붙여 넣을 때 작동하도록했습니다. 그러나 자동 탭을 다음 상자로 보내는 것은 나에게 수수께끼입니다. B4G4F-TZQYJ-2DJDJ-47NZ3-4ZJ5Y 는 그냥 완벽하게 자신을 정렬 : 그래서 여기에 사용자가 복사 및 붙여 넣기가 예를 들어 때

namespace ActivationWiz 
{ 
    public partial class frmEnterTicket : ActivationWiz.frmTemplate 
    { 
     public frmEnterTicket() 
     { 
      InitializeComponent(); 
     } 

     /// <summary> 
     /// Checks if a complete ticket was pasted and distributes it into all 5 input fields 
     /// </summary> 
     /// <param name="sender"></param> 
     /// <param name="e"></param> 
     private void edTicket1_TextChanged(object sender, EventArgs e) 
     {    
      if (edTicket1.Text.Length > 5) 
      { 
       string[] temp = edTicket1.Text.Split('-'); 

       for (int i = 0; i < temp.Length; i++) 
       { 
        switch (i) 
        { 
         case 0: 
          edTicket1.Text = temp[0].Trim(); 
          break; 
         case 1: 
          edTicket2.Text = temp[1].Trim(); 
          break; 
         case 2: 
          edTicket3.Text = temp[2].Trim(); 
          break; 
         case 3: 
          edTicket4.Text = temp[3].Trim(); 
          break; 
         case 4: 
          edTicket5.Text = temp[4].Trim(); 
          break; 
        } 
       } 
      } 
     } 

    } 
} 

. 그러나 사용자가 개별적으로 입력하는 경우 B 4 G 4 F ... 다섯 번째 문자 다음에 다음 문자 상자로 이동하지 않습니다.

나는이를 추가하는 시도 :

if (temp[temp.Length - 1].Length > 5) 
{ 
    string t = temp[temp.Length - 1]; 
    t = t.Substring(0, 5); 
    temp[temp.Length - 1] = t; 
} 

하지만 실패합니다. 내가 할 것이 무엇

답변

1

는 텍스트 상자에있는 텍스트의 길이가 정확히 5. 인 경우, 다음 체크 박스에 포커스를 변경 .Focus()를 사용

private void edTicket1_TextChanged(object sender, EventArgs e) 
{ 
    if (edTicket1.Text.Length == 5) 
    { 
     edTicket2.Focus(); 
    } 
    else if (edTicket1.Text.Length > 5) 
    { 
     ... // What you have 
    } 
} 

... // Repeat for other textboxes 

또한 함께 edTicket2.Focus();을 대체 할 수가 있는지 확인하다 SendKeys.Send("{TAB}"). 그러면 다음 탭 인덱스를 사용하여 컨트롤로 포커스가 이동합니다. 따라서 탭 인덱스의 순서가 올바른지 확인해야합니다.

+0

이 문제를 해결하고 다시 사용해 주셔서 감사합니다. –

0

"this.SelectNextControl ((Control) sender, true, true, true, true);"

을 사용하여 다음 컨트롤로 이동할 수 있습니다.

텍스트 상자의 텍스트 변경 사항을 아래 코드에 입력하면 작동합니다.

나는 모든 텍스트 상자에서 작동 할 수 있도록 보낸 사람을 사용했습니다.

private void Key_TextChanged(object sender, EventArgs e) 
    { 
     TextBox TB = (TextBox)sender; 

     if (TB.Text.Length == 5) 
     { 
     this.SelectNextControl((Control)sender, true, true, true, true); 
     } 
    else if (TB.Text.Length > 5) 
    { 
    // code 
    } 
    } 
관련 문제