Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 即使我将焦点设置为控件,Windows 10 uwp也会隐藏软键盘_C#_Uwp_Windows 10 Universal_Windows 10 Mobile - Fatal编程技术网

C# 即使我将焦点设置为控件,Windows 10 uwp也会隐藏软键盘

C# 即使我将焦点设置为控件,Windows 10 uwp也会隐藏软键盘,c#,uwp,windows-10-universal,windows-10-mobile,C#,Uwp,Windows 10 Universal,Windows 10 Mobile,我有一个Windows10移动uwp应用程序,我有两个问题 首先,我将焦点设置为应用程序中的控件。我通过成功地使用公共调用来实现这一点 Control.Focus(FocusState.Programmatic); 然而,在某些情况下,这是行不通的。大多数情况下是这样的,但例如,当我的页面加载时,我试图在其中一个字段中设置初始焦点,但它不起作用。我在两个地方试过这个电话。首先,在页面的构造函数中,在初始化Componenets之后,以及在override onNavigatedTo方法中。什

我有一个Windows10移动uwp应用程序,我有两个问题

首先,我将焦点设置为应用程序中的控件。我通过成功地使用公共调用来实现这一点

 Control.Focus(FocusState.Programmatic);
然而,在某些情况下,这是行不通的。大多数情况下是这样的,但例如,当我的页面加载时,我试图在其中一个字段中设置初始焦点,但它不起作用。我在两个地方试过这个电话。首先,在页面的构造函数中,在初始化Componenets之后,以及在override onNavigatedTo方法中。什么地方是调用此功能的最佳位置,以及为什么它看起来不起作用的一些原因是什么,特别是当一个新页面被实例化时

第二,与设置焦点有关。我在UI上有一个文本框,我使用上面列出的相同编程焦点调用将控件设置为该文本框。但是,发生这种情况时,软(屏幕上)键盘会显示。当我以编程方式设置焦点时,我不想让它显示出来,但如果用户选择了字段,就让它显示出来。情况是我有一个条形码扫描仪。当页面加载时,我将代码中的焦点设置到文本框中,因此我可以根据条形码扫描仪的结果从代码中设置文本框中的文本。用户几乎不需要输入此字段。因此,我不需要或不想让键盘显示和占用房地产。有一种罕见的情况是,我允许他们仍然手动键入文本,例如,在条形码无法读取的情况下。然后,他们会选择控件(即使它可能已经以编程方式设置了焦点),该控件应再次设置焦点,但应改为光标、触摸或其他方式,然后我想显示软键盘

最好的方法是什么


谢谢

我认为调用
Focus()
的最佳位置是在您试图聚焦的同一个控件的
Loaded
事件处理程序中。当此控件完全加载时,意味着它已准备好进行交互,包括聚焦


至于防止屏幕上出现键盘,
TextBox
类具有
PreventKeyboardDisplayOnProgrammaticFocus
属性。尝试将其设置为
true
,这应该可以解决您的问题。

至于关注文本框以外的任何内容对我来说都不起作用,我找到了一个很好的解决方案:

我打电话:

using Windows.UI.ViewManagement;

InputPane.GetForCurrentView().TryHide();

键盘被隐藏。

?;)哈,不,我们不是。有趣的是,在我所有的搜索中,帖子都没有出现。我想这很讽刺。但是,感谢您链接它,这似乎是一个非常好的解决方案,我也将尝试。谢谢至于显示键盘,您可以在需要时尝试InputPane.TryShow(),我认为通过组合/修改上述问题的答案,可能会实现您想要的。