2017-10-06 143 views
-4

我正在构建一个虚拟键盘以适应我将要部署的触摸屏机器的需求。我使用的是弹出窗口键盘和已经能够连接所有数字按钮如下,这里是我的虚拟键盘类当窗口弹出时如何保持文本框的焦点

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。这意味着当这个弹出窗口出现时(当文本框或任何其他输入元素获得焦点时弹出键盘弹出窗口),我无法获得对焦点文本框的引用,所以我不能写入它。请如何确保集中​​的文本框保持专注,以便我可以从弹出窗口分配其文本属性?或者如果有更好的方法来做到这一点,请指出我的方向是正确的。由于

+0

难道你不能自己创建它吗? –

+0

看到这个:https://www.codeproject.com/Articles/145579/A-Software-Virtual-Keyboard-for-Your-WPF-Apps – tabby

+0

@MarcoSalerno我现在要做的,但我有一个问题。当在键盘上点击一个按钮(这是一个弹出窗口)时,如何在父窗口中设置文本框的文本以及按钮传递的值 –

回答

0

我用这个键盘WPF:

keyboard control wpf

它是可以根据需要来定制一个弹出控制。你有完整的代码,它是免费的。在我的情况下,我不得不调整弹出(布局和添加德文字母),并且非常简单。

我还必须显示一个数字键盘,并且我使用了相同的键盘,但布局更简单。在幕后,所有这一切都非常简单:您必须在网格中定义一个关键点,将其放置在您想要的位置,并确保您点击相应的虚拟关键点代码。

0

我使用弹出控件创建键盘,使用按钮创建所有按键,并将单个事件处理程序连接到所有输入按钮,然后为退格键和输入按钮指定不同的事件处理程序。一旦单击任何字母,数字或符号按钮,就会调用以下函数。

try 
     { 
      IInputElement focusedControl = Keyboard.FocusedElement; 
      var foc = focusedControl as TextBox; 
      foc.Text += (((sender as Button).Content as Border).Child as TextBlock).Text; 
     } 
     catch (Exception) 
     { 

     } 

将按钮的文本插入到焦点控件中。这是非常基本的。我会欣赏更多关于如何在这方面进行扩展的建议。谢谢

相关问题