当窗口弹出时如何保持文本框的焦点
问题描述:
我正在构建一个虚拟键盘以适应我将要部署的触摸屏机器的需求。我使用的是弹出窗口键盘和已经能够连接所有数字按钮如下,这里是我的虚拟键盘类当窗口弹出时如何保持文本框的焦点
public partial class NumKeypad : Window
{
withoutB withoutbvn;
enterBvn ebvnn;
public NumKeypad()
{
InitializeComponent();
}
public NumKeypad(withoutB wobvn)
{
InitializeComponent();
withoutbvn = wobvn;
}
private void one_Click(object sender, RoutedEventArgs e)
{
var focusedElt = FocusManager.GetFocusedElement(withoutbvn);
var tbox = focusedElt as TextBox;
try
{
withoutbvn.ph.Text += (((sender as Button).Content as Border).Child as TextBlock).Text;//this works, but this is assigning directly to only one control. i want to assign to whatever control that has focus
}
catch (Exception ex)
{
}
}
}
在one_click函数的第一行(负责处理所有输入按钮点击)我试图获取当前关注于实例为“withoutbvn”的页面中的元素的引用。 在第二行,我尝试将元素转换为文本框,以便我可以写入其文本属性。但是一直返回null。这意味着当这个弹出窗口出现时(当文本框或任何其他输入元素获得焦点时弹出键盘弹出窗口),我无法获得对焦点文本框的引用,所以我不能写入它。请如何确保集中的文本框保持专注,以便我可以从弹出窗口分配其文本属性?或者如果有更好的方法来做到这一点,请指出我的方向是正确的。由于
答
我用这个键盘WPF:
它是可以根据需要来定制一个弹出控制。你有完整的代码,它是免费的。在我的情况下,我不得不调整弹出(布局和添加德文字母),并且非常简单。
我还必须显示一个数字键盘,并且我使用了相同的键盘,但布局更简单。在幕后,所有这一切都非常简单:您必须在网格中定义一个关键点,将其放置在您想要的位置,并确保您点击相应的虚拟关键点代码。
答
我使用弹出控件创建键盘,使用按钮创建所有按键,并将单个事件处理程序连接到所有输入按钮,然后为退格键和输入按钮指定不同的事件处理程序。一旦单击任何字母,数字或符号按钮,就会调用以下函数。
try
{
IInputElement focusedControl = Keyboard.FocusedElement;
var foc = focusedControl as TextBox;
foc.Text += (((sender as Button).Content as Border).Child as TextBlock).Text;
}
catch (Exception)
{
}
将按钮的文本插入到焦点控件中。这是非常基本的。我会欣赏更多关于如何在这方面进行扩展的建议。谢谢
难道你不能自己创建它吗? –
看到这个:https://www.codeproject.com/Articles/145579/A-Software-Virtual-Keyboard-for-Your-WPF-Apps – tabby
@MarcoSalerno我现在要做的,但我有一个问题。当在键盘上点击一个按钮(这是一个弹出窗口)时,如何在父窗口中设置文本框的文本以及按钮传递的值 –