窗口中的多个文本框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的新手。

窗口中的多个文本框WPF C#

类似这样的解决方案很简单。你用你点击的文本框等调用你的方法,然后开始这个过程,并将焦点强制放在你触摸的文本框上。

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