【发布时间】:2018-03-18 05:49:17
【问题描述】:
我正在构建一个虚拟键盘,以满足我将要部署的触摸屏机器的需求。我正在使用键盘的弹出窗口,并且能够按如下方式连接所有数字按钮,这是我的虚拟键盘类
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。意思是当这个弹出窗口出现时(当文本框或任何其他输入元素获得焦点时,键盘弹出窗口出现),我无法获得对焦点文本框的引用,因此我无法写入它。请问我如何确保焦点文本框保持焦点,以便我可以从弹出窗口分配其文本属性?或者,如果有更好的方法可以做到这一点,请指出我正确的方向。谢谢
【问题讨论】:
-
不能自己创建吗?
-
@MarcoSalerno 我现在正在尝试这样做,但我有一个问题。当在键盘上单击按钮(这是一个弹出窗口)时,如何使用按钮传递的值在父窗口中设置文本框的文本
-
您可以将键盘作为对话框打开,然后当您单击“Enter”时,您可以使用存储在键盘中的字符串。我过去所做的是在键盘顶部有一个 TextBox,其中包含来自关键条目的所有文本。我们设置系统,以便在“编辑模式”下弹出任何文本框。 (这是不久前的事了,不记得所有细节了)。
标签: c# wpf windows keyboard virtual-keyboard