2013-07-22 1 views
0

textbox1 데이터를 LostFocus 이벤트에 바인딩하고 있습니다. 키보드 탐색을 설정했습니다. textbox1textbox2 키보드의 경우 Tabindex=7 네비게이션 TabIndex=8입니다. 이제 내 문제는 textbox1에 대한 정규 표현식 유효성 검사를하고 있습니다. textbox1에 잘못된 문자를 입력하면 해당 문자가 유효하지 않습니다. MessageBox은 유효하지 않습니다. 확인을 클릭하면이 키보드 탐색을 textbox1으로 설정하려는 유효한 textbox2으로 이동합니다. 문자. 내가 어떻게 이걸 얻을 수 있니? 텍스트가 잘못 입력하면 내가 txtbox1에 키보드 탐색을 설정하는 방법코드에서 키보드 네비게이션을 설정하는 방법.

if (!string.IsNullOrEmpty(txtbox1.Text)) 
{ 
    if(Regex.IsMatch(txtbox1.Text, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$")) 
    { 
     txtbox2.Text = "(" + txtbox1.Text + ")"; 
    } 
    else 
    { 
     MessageBoxResult mbr; 
     mbr=MessageBox.Show("please enter valid Email Id", "VMS", MessageBoxButton.OK, MessageBoxImage.Error); 

     if (mbr == MessageBoxResult.OK) 
     { 
      Keyboard.Focus(txtbox1); 
      txtbox1.Clear(); 
      // txtbox1.TabIndex = 7; 
      //txtbox1.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up)); 
      // txtbox2.MoveFocus(new TraversalRequest(FocusNavigationDirection.Previous)); 
     } 

     //txtbox1.Focus();     

     // KeyboardNavigation.SetTabIndex(txtbox1, 6); 
    } 
} 
else 
{ 
    txtbox2.Text = string.Empty; 
    // txtbox1.TabIndex = 7; 
    //txtbox1.MoveFocus(new TraversalRequest(FocusNavigationDirection.Previous)); 
    //KeyboardNavigation.SetTabIndex(txtbox1, 7); 
    // txtbox2.TabIndex=7; 
    //Keyboard.Focus(txtbox2); 
} 

:

나는이 방법을 시도? 어떠한 제안.

는 편집 : 추가 나는 새로운 프로젝트에 코드를 복사 TextBoxes의 몇 가지를 추가 할 때

<Window x:Class="DataBinding.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
<Grid> 
    <TextBox Name="txtbox1" Margin="71,22,82,195" LostFocus="txtbox1_LostFocus" /> 
    <TextBox Name="txtbox2" Margin="71,96,82,127" /> 

</Grid> 

답변

0

가 ... 다시 몇 단계를 진행하십시오 XAML, 이미 당신이 무엇을합니까 후. MessageBox가 나타나서 나는 OK을 클릭했고 초점은 textBox1에 머물렀다. 이것이 내가 예상 한 행동입니다.

나는. 그것 textBox2에 논리적 포커스를 이동하고 다른 코드, 당신은 TextBox ES가에 거주하는 Window 또는 UserControl에 설정 어쩌면 속성입니다 것을 당신에게

+0

을 제안하지만 나에 대한 여전히를 textbox2 ..로 이동합니다. 두 텍스트 상자에 대해 xaml에서 keyboardNavigation.TabIned를 제거했습니다. – kida

+0

xaml 코드도 추가했습니다. LostFocus의 코드를 사용하고 있습니다. tet32box1의 이벤트 – kida

+0

LostFocus 이벤트를 변경하면 LostKeyBoardFocus 이벤트가 작동합니다. 암호. – kida