1
我目前正在WPF中做一個觸摸應用程序。它迄今爲止效果很好,但有時我需要啓動內置的Web瀏覽器控件。我的問題是,儘管縮放,滾動和這樣的工作,我不能讓Windows 8的虛擬鍵盤(如IE 11)顯示,當用戶的焦點在Web文本輸入。WebBrowser控件中的虛擬Win8鍵盤
有什麼辦法可以實現這樣的行爲嗎?請記住,我的WPF應用程序應該始終運行最高和全屏,因此我不能要求用戶手動啓動虛擬鍵盤。
我目前正在WPF中做一個觸摸應用程序。它迄今爲止效果很好,但有時我需要啓動內置的Web瀏覽器控件。我的問題是,儘管縮放,滾動和這樣的工作,我不能讓Windows 8的虛擬鍵盤(如IE 11)顯示,當用戶的焦點在Web文本輸入。WebBrowser控件中的虛擬Win8鍵盤
有什麼辦法可以實現這樣的行爲嗎?請記住,我的WPF應用程序應該始終運行最高和全屏,因此我不能要求用戶手動啓動虛擬鍵盤。
最後發現它here ...正如所寫,Winforms WebBrowser對HTMLDocument有更好的包裝,使得它比使用MSHTML interop更容易。這裏有一個代碼片段:
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方法manuallly啓動和終止tabtip.exe。
你從哪裏找到VirtualKeyBoardHelper? –
嘿!這是你自己的班級使用。謝謝! –