2014-09-18 3 views
0

J'ai une application avec 4 contrôles de zone de texte: TotalTextBox, PaidTextBox, RemainingTextBox et DriverTextBox.Passer la zone de texte en cours

Comment passer I à la zone de texte actuelle mise au point par l'utilisateur (uniquement s'il n'est pas DriverTextBox, à savoir que de TotalTextBox, PaidTextBox, RemainingTextBox)? Au lancement du programme, il convient de se concentrer sur le contrôle TotalTextBox. J'ai également mis en place un try/catch de sorte qu'il ne reste plus qu'à se concentrer sur le contrôle TotalTextBox.

Ceci est mon code à ce jour:

MainWindow.Xaml.cs (où tb est la zone de texte au point que je veux passer à travers)

public MainWindow() 
{ 
      InitializeComponent(); 
      TotalTextBox.Focus(); 

      // Setup keypad 
      bool dotControl = false; 
      int count = 0; 
} 

private void RemoveLastButton_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     var keypadObject = new Keypad(); 
     keypadObject.RemoveLast(TextBox tb, bool dotControl, int count); 
    } 
    catch (Exception) 
    { 
     TotalTextBox.Focus(); 
    } 
} 

Keypad.cs

public void RemoveLast(TextBox tb, bool dotControl, int count) 
{ 
    if (tb.Text.Length > 0) 
    { 
     if (char.IsDigit(tb.Text[tb.Text.Length - 1])) count = 0; 
     else 
     { 
      dotControl = false; 
      count = 0; 
     } 
     tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1); 
    } 
} 

Répondre

2

Pour obtenir la zone de texte actuellement ciblée, vous pouvez faire quelque chose comme ceci:

TextBox textbox = Keyboard.FocusedElement as TextBox; 

Si textbox finit par être null, alors ce n'est pas une zone de texte qui est actuellement concentré.

Pour compléter la réponse, vous pouvez filtrer ce que vous voulez par simple comparaison avec vos zones de texte connues.

if (textbox != null && textbox != DriverTextBox) 
{ 
    var keypadObject = new Keypad(); 
    keypadObject.RemoveLast(textbox, dotControl, count); 
} 
Questions connexes