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

本文关键字:焦点 文本 于焦点 | 更新日期: 2023-09-27 18:22:20

我有一个带有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);
    }
}

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

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

TextBox textbox = Keyboard.FocusedElement as TextBox;

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

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

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