WPF中使用cefsharp
阿新 • • 發佈:2018-09-11
global urn tex 自己 led 管理器 set 包管理器 禁止 原文:WPF中使用cefsharp
完善:
方法2:修改HTML文件
禁止鼠標選中:
詳情參考:https://github.com/cefsharp/CefSharp/wiki
新入職一家公司,由寫服務端接口變成了軟硬件通信、服務器、客戶端、C/S、B/S亂七八糟各種打雜。首先接收一個WPF項目,因為不熟WPF,再加上前端我也不熟,我打算使用類似Webapp的方式改造一下,驅使我這樣改造的原因是----我心裏其實是期待著老板能看在我很忙很累的份上開開恩,招個前端妹子來。
WPF自己的webbrowser控件使用起來經常會js出錯,看網上說可以修改註冊表提高wpf默認使用的ie瀏覽器版本,最後決定使用cefsharp。
包管理器下載安裝了cefsharp.wpf,沒註意版本。
編譯報錯,提示需要.net 4.5.2以上版本,當前程序使用的是.net 4.0,編譯器為vs2013。
工程右鍵->屬性->目標框架,下拉最高只有.net 4.5.1,下載.net 4.5.2 Developer Pack安裝。
準備工作結束,直接上代碼
準備html
<html> <head> <meta charset="utf-8"> <link href="css/bootstrap.min.css?v=3.4.0" rel="stylesheet"> <script language="JavaScript" type="text/javascript"> function Selec() { bound.MyMethod(); } </script> </head> <body oncontextmenu=‘return false‘ onselectstart=‘return false‘> <input type="text" class="form-control"> <span class="help-block m-b-none">部門列表</span> <input type="submit" value="保存" onclick="Selec()"> </body> </html>
xaml布局文件不需要改動,相應cs文件
在構造函數中加入
//var browser = new CefSharp.Wpf.ChromiumWebBrowser(); this.Content = browser; browser.Address = @"c:/html/Department.html";//文件路徑 browser.RegisterJsObject("bound", new BoundObject(), new CefSharp.BindingOptions { CamelCaseJavascriptNames = false });//次函數有對應異步方法(RegisterAsyncJsObject),區別和使用場景沒仔細看
public class BoundObject ? ? ? ? { ? ? ? ? ? ? public void MyMethod() ? ? ? ? ? ? { ? ? ? ? ? ? ? ? MessageBox.Show("success"); ? ? ? ? ? ? }
}
new CefSharp.BindingOptions { CamelCaseJavascriptNames = false }參數區分大小寫。
好了,啟動點擊保存,彈出了了對話框。
還可以在xaml中使用
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
d:DesignHeight="900" d:DesignWidth="1240">
<Grid>
<cefSharp:ChromiumWebBrowser Name="mychrome" Height="900" Width="1240"/>
</Grid>
對應cs文件中作相應更改
var browser = new CefSharp.Wpf.ChromiumWebBrowser();
mychrome = browser;
browser.Address = CGlobal.InstallPath + "html/Department.html";
browser.RegisterAsyncJsObject("bound", new BoundObject(), new CefSharp.BindingOptions { CamelCaseJavascriptNames = false }); //Standard object rego
完善:
禁用右鍵 方法1
cs文件中加入
browser.MenuHandler = new MenuHandler();MenuHandler繼承自接口IContextMenuHandler
public class MenuHandler : CefSharp.IContextMenuHandler
{
public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
{
model.Clear();
}
public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
{
return false;
}
public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)
{
}
public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
{
return false;
}
}
方法2:修改HTML文件
<body oncontextmenu=‘return false‘>
禁止鼠標選中:
<body oncontextmenu=‘return false‘ onselectstart=‘return false‘>
詳情參考:https://github.com/cefsharp/CefSharp/wiki
WPF中使用cefsharp