正在传递当前处于焦点中的文本框
本文关键字:焦点 文本 于焦点 | 更新日期: 2023-09-27 18:22:20
我有一个带有4个文本框控件的应用程序:TotalTextBox
、PaidTextBox
、RemainingTextBox
和DriverTextBox
。
如何通过用户聚焦的当前文本框(仅当它不是DriverTextBox
时,即仅来自TotalTextBox
、PaidTextBox
、RemainingTextBox
)?
在程序启动时,它应该关注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);
}