传递当前处于焦点的文本框

时间:2014-09-18 18:56:30

标签: c# wpf

我有一个包含4个文本框控件的应用程序:TotalTextBoxPaidTextBoxRemainingTextBoxDriverTextBox

如何通过用户关注当前文本框(仅当它不是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);
    }
}

1 个答案:

答案 0 :(得分:2)

要获取当前关注的文本框,您可以执行以下操作:

TextBox textbox = Keyboard.FocusedElement as TextBox;

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

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

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