系统相关
首页 > 系统相关> > c# – Linux上的Mono WebBrowser控件

c# – Linux上的Mono WebBrowser控件

作者:互联网

我正在编写一个我希望在WindowsLinux下运行的应用程序.由于它是一个文本应用程序,渲染和用户交互的明显选择是在WebBrowser控件中使用html.这一切在Windows中使用Mono都非常有用,但我绝对不知道如何在Linux中使用Mono让它工作.我正在运行Linux Mint 17,安装了MonoDevelop和Firefox.以下代码片段编译并运行,但是当应用程序启动时,wbMain不会显示.尝试使用wbMain呈现html字符串时应用程序死亡.

private System.Windows.Forms.Panel pnlMain;
private Mono.WebBrowser.IWebBrowser wbMain;
private System.Windows.Forms.Button btnGo;

this.pnlMain = new System.Windows.Forms.Panel();
this.wbMain = Mono.WebBrowser.Manager.GetNewInstance();
this.wbMain.Activate();
this.btnGo = new System.Windows.Forms.Button();
this.pnlMain.SuspendLayout();
this.SuspendLayout();
// 
// pnlMain
// 
this.pnlMain.Controls.Add((System.Windows.Forms.Control)this.wbMain.Window);
this.pnlMain.Controls.Add(this.btnGo);
this.pnlMain.Location = new System.Drawing.Point(12, 1);
this.pnlMain.Name = "pnlMain";
this.pnlMain.Size = new System.Drawing.Size(260, 248);
this.pnlMain.TabIndex = 0;
// 
// wbMain
// 
this.wbMain.Resize(260, 216);

解决方法:

this.wbMain = Mono.WebBrowser.Manager.GetNewInstance();

问题在于我从这里理解的GetNewInstance(). GetNewInstance默认采用Windows平台,您需要传入自己的Mono.WebBrowser.Platform,以便在您想要的框架中呈现(如Gtk).

Source Code

您可以在我链接的源代码中看到,默认的GetNewInstance()返回Platform.Winforms;

    public static IWebBrowser GetNewInstance ()
    {
        return Manager.GetNewInstance (Platform.Winforms);
    }

此外,Mono.WebBrowser已经退役,转而支持WebkitSharp.您现在应该使用WebkitSharp来执行此操作. WebkitSharp有……一些问题,因此有一个名为open-webkit-sharp的当前开放版本也可能对您有用.截至2012年,该代码至少是最新的.而Mono WebBrowser和webkit-sharp没有任何重大的代码更改……在几年内,至少5到7年.

我也很开心Awesomium的开放版本,它是游戏行业的主要产品.同样,Awesomium的开放版本自2012年以来没有任何重大更新.但是,如果金钱/费用不是问题并且最近有更新,您可以获得Awesomium的付费版本.

标签:linux,mono,webbrowser-control,c-2
来源: https://codeday.me/bug/20190830/1767864.html