gpt4 book ai didi

c# - Windows 8 - 如何关闭触摸键盘?

转载 作者:可可西里 更新时间:2023-11-01 07:48:07 27 4
gpt4 key购买 nike

我正在使用 C# 开发适用于 Windows 8 的应用程序,一件非常烦人的事情是触摸键盘有时会停留在屏幕上,即使所有文本框都已失去焦点。

我读了文章keyboard dismissal logic white paper ,这解释了当从一个控件切换到另一个控件时,即使控件可能不接受键盘输入,键盘也可以保持打开状态。这就是我的情况,因为我的所有内容都托管在 GridView 或 ListView 中。当用户点击屏幕上的任何项目时,点击将落在这些控件上。这很烦人,因为键盘占据了半个屏幕,而且无法关闭键盘。

我试过将文本框设置为禁用,但没有效果。移除键盘的唯一方法是将焦点设置在按钮上,这非常 hacky。

我想我需要用“AutomationPeer”做点什么,但我不清楚具体要做什么。有没有办法覆盖此行为?

编辑:我想通了。目标是更改为 GridView 和未在 whitepaper 中列出的 GridView 项的控件类型.这是我所做的允许我关闭键盘的网格代码:

public class KeyboardUnfocusableGridView : GridView
{
private class KeyboardUnfocusableGridViewAutomationPeer : GridViewAutomationPeer
{
public KeyboardUnfocusableGridViewAutomationPeer(GridView owner)
: base(owner)
{
}

protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Custom;
}

}

private class KeyboardUnfocusableGridViewItemAutomationPeer : GridViewItemAutomationPeer
{
public KeyboardUnfocusableGridViewItemAutomationPeer(GridViewItem owner)
: base(owner)
{ }

protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Custom;
}

}

private class KeyboardUnfocusableGridViewItem : GridViewItem
{
protected override AutomationPeer OnCreateAutomationPeer()
{
var baseItem = base.OnCreateAutomationPeer();
return new KeyboardUnfocusableGridViewItemAutomationPeer(this);
}


}

protected override AutomationPeer OnCreateAutomationPeer()
{
var baseItem = base.OnCreateAutomationPeer();
return new KeyboardUnfocusableGridViewAutomationPeer(this);
}

protected override Windows.UI.Xaml.DependencyObject GetContainerForItemOverride()
{
return new KeyboardUnfocusableGridViewItem();
}
}

不幸的是我需要写这么多代码来做一件简单的事情。这绝对不是最佳选择,因为我需要为我需要使用的每个 ItemsControl 执行此操作。

最佳答案

您需要做的是将焦点设置到任何不接受文本输入的控件。但是,请注意,如果用户手动显示键盘(而不是因为 TextBox 收到焦点而自动显示),则键盘将保持打开状态。

查看关于屏幕键盘的这个非常好的线程以获取更多信息:

http://social.msdn.microsoft.com/Forums/pl/winappswithcsharp/thread/3c227262-1d2c-4382-9c50-5b71d2b5d823

关于c# - Windows 8 - 如何关闭触摸键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com