我需要在WPF WebBrowser
控件中擁有新IE版本的選項卡視圖。我怎樣才能實現它?使用Tabs的WebBrowser控件
我是否在必須使用TabControl
和主機WebBrowser
控制在其每個標籤項目?我認爲可能有更好的方法在WebBrowser
控制自己的選項卡式視圖,因爲一些功能非常方便地由IE插件本身管理,例如「在標籤中打開」選項,「拖動和排列標籤順序」,打開新的標籤默認url等
如果我去TabControl
的方式,那麼我將不得不重新創建所有這些功能。任何野外投入都是受歡迎的:-)
Thx。
編輯
解決方案來實現如何啓用「打開的選項卡」就在你WebBrowser
控制點擊選項。
using System;
using System.Runtime.InteropServices;
namespace TabbedBrowsing
{
public enum INTERNETFEATURELIST
{
FEATURE_OBJECT_CACHING = 0,
FEATURE_ZONE_ELEVATION = 1,
FEATURE_MIME_HANDLING = 2,
FEATURE_MIME_SNIFFING = 3,
FEATURE_WINDOW_RESTRICTIONS = 4,
FEATURE_WEBOC_POPUPMANAGEMENT = 5,
FEATURE_BEHAVIORS = 6,
FEATURE_DISABLE_MK_PROTOCOL = 7,
FEATURE_LOCALMACHINE_LOCKDOWN = 8,
FEATURE_SECURITYBAND = 9,
FEATURE_RESTRICT_ACTIVEXINSTALL = 10,
FEATURE_VALIDATE_NAVIGATE_URL = 11,
FEATURE_RESTRICT_FILEDOWNLOAD = 12,
FEATURE_ADDON_MANAGEMENT = 13,
FEATURE_PROTOCOL_LOCKDOWN = 14,
FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15,
FEATURE_SAFE_BINDTOOBJECT = 16,
FEATURE_UNC_SAVEDFILECHECK = 17,
FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18,
FEATURE_TABBED_BROWSING = 19,
FEATURE_SSLUX = 20,
FEATURE_DISABLE_NAVIGATION_SOUNDS = 21,
FEATURE_DISABLE_LEGACY_COMPRESSION = 22,
FEATURE_FORCE_ADDR_AND_STATUS = 23,
FEATURE_XMLHTTP = 24,
FEATURE_DISABLE_TELNET_PROTOCOL = 25,
FEATURE_FEEDS = 26,
FEATURE_BLOCK_INPUT_PROMPTS = 27,
FEATURE_ENTRY_COUNT = 28
}
public enum DWFLAGS
{
SET_FEATURE_ON_THREAD = 0x00000001,
SET_FEATURE_ON_PROCESS = 0x00000002,
SET_FEATURE_IN_REGISTRY = 0x00000004,
SET_FEATURE_ON_THREAD_LOCALMACHINE = 0x00000008,
SET_FEATURE_ON_THREAD_INTRANET = 0x00000010,
SET_FEATURE_ON_THREAD_TRUSTED = 0x00000020,
SET_FEATURE_ON_THREAD_INTERNET = 0x00000040,
SET_FEATURE_ON_THREAD_RESTRICTED = 0x00000080
}
public static class IEFeatureSetBehavior
{
[DllImport("urlmon.DLL")]
public static extern Int32 CoInternetSetFeatureEnabled(INTERNETFEATURELIST featureEntry, Int32 dwFlags, bool fEnable);
[DllImport("urlmon.DLL")]
public static extern Int32 CoInternetIsFeatureEnabled(INTERNETFEATURELIST featureEntry, Int32 dwFlags);
public static void EnabledTabbedBrowsing()
{
var lr = 0;
var featureToEnable = INTERNETFEATURELIST.FEATURE_TABBED_BROWSING;
if (CoInternetSetFeatureEnabled(featureToEnable, (Int32)DWFLAGS.SET_FEATURE_ON_PROCESS, true) == 0)
{
if (CoInternetIsFeatureEnabled(featureToEnable, (Int32)DWFLAGS.SET_FEATURE_ON_PROCESS) != 0)
{
lr = 2;
}
else
{
lr = 1;
}
}
}
}
}
我們只需要調用
IEFeatureSetBehavior.EnabledTabbedBrowsing();
在窗口的constrcutor。所有WebBrowser
控件現在將啓用Open in Tab
右鍵單擊選項\ wheel click \ Ctrl + Click。
但是,這不會在您的WebBrowser
控件中託管aTabControl。該選項打開IE瀏覽器實例,打開相關鏈接作爲Tab。 :(
但無論如何還有另一種方式,我們就可以知道標籤瀏覽請求。如果用戶試圖調用標籤式瀏覽,一個event由WebBrowser
控制提出,我們可以處理此事件,並基於該創建一個新的TabItem
在它的另一個Web瀏覽器控件這是一個WPF TabControl
它包裝我們以前的Web瀏覽器控件的一部分。
乾杯。
:-)
Thx man。這確實有助於實現右鍵點擊功能的選項卡式選項的可用性。:-)查看**編輯**題。 –