仅作笔记用:C# MiniBlink 初始化并实现JS调用C#代码

创建WinForm项目,打开“工具-NuGet包管理器-管理解决方案的NuGet包”。搜索“Miniblink”,选择MiniBlinkNet进行安装。
在项目的Resources目录添加设计的HTML文件作为显示界面。例如mainPage.html。在解决方案浏览器选中这个文件,在属性窗口的生成操作选择“嵌入的资源”。
初始化的代码要点:

  • 在C#中读取资源内容。
  • 定义全局变量WebViewPanel
  • 在C#代码中绑定JS函数名。
  • C#在同一个类下实现该方法。
  • 在网页内使用JS调用之前绑定的函数名。

代码如下。

// 省去开头的其他using
using Kyozy.MiniblinkNet;

namespace dotnet5demo
{
    public partial class Form1 : Form
    {
        WebView browser;
        Panel p;

        public Form1()
        {
            browser = new WebView();
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            Assembly assembly = Assembly.GetExecutingAssembly();
            // 指定资源名称
            System.IO.Stream stream = assembly.GetManifestResourceStream(Assembly.GetEntryAssembly().GetName().Name + ".Resources.mainPage.html");
            // 储存网页HTML的字符串对象
            string mainPage = new StreamReader(stream).ReadToEnd();
            
            p = new Panel();
            p.AutoSize = false;
            p.Dock = DockStyle.Fill;
            this.Controls.Add(p);

            if (!browser.Bind(p)) return;

            browser.SetDeviceParameter("screen.width", string.Empty, 1440);
            browser.NavigationToNewWindowEnable = false;

            browser.LoadHTML(mainPage);
            JsValue.BindFunction("click", new wkeJsNativeFunction(csClick), 0); 
            // 最后一个参数是原生函数形参数量。若需要在C#代码获取JS传过来的参数,则调用表达式JsValue.Arg(es, 0).ToString(es)即可,第二个参数0是参数序号。
        }

        private long csClick(IntPtr es, IntPtr param)
        {
            MessageBox.Show("Hello, World!", "MiniBlinkDemo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Application.Exit();
            return 0L;
        }
    }
}

mainPage.html代码如下:

<html>
<head>
    <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.4.3/css/layui.css"/>
</head>
<body>
    <h1>Hello, World!</h1>
    <button class="layui-btn layui-btn" id="btn">Button</button>
    <script>
    document.getElementById("btn").onclick = click;
    </script>
</body>
</html>

这样,点击按钮就可以执行对应的C#代码了。如果报错无法加载 DLL“node.dll”,就从%USERPROFILE%\.nuget\packages\miniblinknet\版本号\build里面拷一个node.dll出来放到程序目录里面就可以了。在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值