我目前正在WPF中进行触控应用。它到目前为止工作得很好,但有时我需要启动内置的Web浏览器控件。我的问题是,尽管缩放,滚动等工作正常,但是当用户将注意力集中在Web文本输入上时,我无法显示Windows 8虚拟键盘(如IE 11中所示)。
有没有办法实现这种行为?请记住,我的WPF应用程序应该始终运行最顶层和完全全屏,所以我不能要求用户手动启动虚拟键盘。
答案 0 :(得分:2)
最后发现它here ...正如所写的,Winforms WebBrowser具有更好的HTMLDocument包装,使其比使用MSHTML互操作更容易。这是一段代码:
C#:
public partial class BrowserWindow : Window
{
public BrowserWindow(string url)
{
InitializeComponent();
WebView.ScriptErrorsSuppressed = true;
WebView.AllowNavigation = true;
WebView.Navigate(new Uri(url));
WebView.DocumentCompleted += LoadCompleteEventHandler;
}
private void LoadCompleteEventHandler(object sender, WebBrowserDocumentCompletedEventArgs navigationEventArgs)
{
HtmlElementCollection elements = this.WebView.Document.GetElementsByTagName("input");
foreach (HtmlElement input in elements)
{
if (input.GetAttribute("type").ToLower() == "text")
{
input.GotFocus += (o, args) => VirtualKeyBoardHelper.AttachTabTip();
input.LostFocus += (o, args) => VirtualKeyBoardHelper.RemoveTabTip();
}
}
}
}
XAML :
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
x:Class="PlayPlatform.BrowserWindow"
Title="Browser" ResizeMode="NoResize"
WindowStartupLocation="CenterScreen" WindowState="Maximized" Topmost="True" ShowInTaskbar="False" WindowStyle="None" AllowDrop="False" AllowsTransparency="False">
<WindowsFormsHost HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<wf:WebBrowser x:Name="WebView" />
</WindowsFormsHost>
</Window>
VirtualKeyBoardHelper方法正在手动启动并终止tabtip.exe。