窗口中的多个文本框WPF C#
本文关键字:WPF 文本 窗口 | 更新日期: 2023-09-27 18:00:24
我正在创建这个使用屏幕键盘的项目。问题是我的窗口里有几个文本框。问题是,当我选择文本框并开始使用屏幕键盘时,文本应该显示在我选择的文本框上。
有可能不是所有的文本框都被使用,这取决于用户的偏好。
这是我点击按钮时的示例代码
private void button_numeric_1_Click(object sender, RoutedEventArgs e)
{
if (txtThousand.Focus())
{
txtThousand.Text += "1";
// txtThousand.Focus();
txtThousand.SelectionStart = txtThousand.Text.Length;
}
else if (txtFivehundred.Focus())
{
txtFivehundred.Text += "1";
txtFivehundred.Focus();
txtFivehundred.SelectionStart = txtThousand.Text.Length;
}
}
我现在的问题是如何确定哪个文本框处于活动状态。
当我使用这个代码时:
private void StartKeyBoardProcess(TextBox tb)
{
try
{
if (tb != null)
{
MessageBox.Show("Pumasok!");
tb.Focus();
}
}
catch (Exception ex)
{
MessageBox.Show("Error");
}
}
private void txtThousand_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
TextBox tb = sender as TextBox;
StartKeyBoardProcess(tb);
}
什么也没发生。
当我点击我的按钮时,它只在第一个文本框中输入文本。当我点击另一个文本框时,它会在第一个文本框中继续输入。
有人能告诉我怎么解决这个问题吗?我是WPF的新手。
类似这样的解决方案很简单。你用你点击的文本框等调用你的方法,然后开始这个过程,并将焦点强制放在你触摸的文本框上。
private void StartKeyBoardProcess(Textbox tb) {
try {
if (tb != null) {
Process.Start("osk.exe", "/C");
tb.Focus();
}
}
catch (Exception ex) {
Messagebox.Show("Error: StartKeyBoardProcess: "+ex);
}
}
private void TextBox_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Textbox tb = sender as Textbox;
StartKeyBoardProcess(tb);
}
如下所示:(
我使用PreviewMouseLeftButtonDown事件:
private void txtThousand_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
TextBox tb = sender as TextBox;
StartKeyBoardProcess(tb);
}