C# WebBrowser控件中的虚拟Win8键盘

C# WebBrowser控件中的虚拟Win8键盘,c#,wpf,windows-8,touch,webbrowser-control,C#,Wpf,Windows 8,Touch,Webbrowser Control,我目前正在WPF中做一个触摸应用程序。到目前为止,它工作得很好,但有时我需要启动内置的web浏览器控件。我的问题是,尽管缩放、滚动等功能正常工作,但当用户关注web文本输入时,我无法让Windows 8虚拟键盘(如IE 11)显示出来 有没有办法达到这种行为?请记住,我的WPF应用程序应该一直运行在最顶端,完全全屏,所以我不能要求用户手动打开虚拟键盘 终于找到了。。。如前所述,Winforms WebBrowser具有更好的HTMLDocument包装器,这比使用MSHTML互操作更容易。下面是

我目前正在WPF中做一个触摸应用程序。到目前为止,它工作得很好,但有时我需要启动内置的web浏览器控件。我的问题是,尽管缩放、滚动等功能正常工作,但当用户关注web文本输入时,我无法让Windows 8虚拟键盘(如IE 11)显示出来

有没有办法达到这种行为?请记住,我的WPF应用程序应该一直运行在最顶端,完全全屏,所以我不能要求用户手动打开虚拟键盘

终于找到了。。。如前所述,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();
                    }
                }
            }
        }
<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>
XAML

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();
                    }
                }
            }
        }
<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。

在哪里找到VirtualKeyBoardHelper的?明白了!这是你自己的课。谢谢