2014-09-18 49 views
0

我有一个应用程序与4个文本框控件:TotalTextBox,PaidTextBox,RemainingTextBoxDriverTextBox传递文本框当前焦点

我如何通过当前的文本框焦点由用户(仅当它是不是DriverTextBox,即只能从TotalTextBoxPaidTextBoxRemainingTextBox)?

在程序启动时,它应该关注TotalTextBox控件。我也实现了一个try/catch,因此它只能默认回到专注于TotalTextBox控件。

这是我到目前为止的代码:

MainWindow.Xaml.cs(其中TB是文本框焦点我想通过)

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); 
    } 
} 

回答

2

要获得当前的焦点文本框,可以这样做:

TextBox textbox = Keyboard.FocusedElement as TextBox; 

如果textbox最终被null,那么它是不是当前关注一个文本框。

要完成答案,您可以通过与已知文本框进行简单比较来过滤想要的内容。

if (textbox != null && textbox != DriverTextBox) 
{ 
    var keypadObject = new Keypad(); 
    keypadObject.RemoveLast(textbox, dotControl, count); 
} 
相关问题