Sciter在WinForms中的应用

Sciter是一个跨平台的HTML引擎,可以免费用于商业用途。可以仅使用Sciter来创建整个应用程序,或者将其作为WinForms应用程序的子控件嵌入。要在C#中使用Sciter,需要SciterSharp库,它提供了对官方C/C++ SDK头文件的.NET绑定,而是这个库的作者。如果是Sciter的新手,可以阅读入门教程文章。本文将简要解释如何在WinForms中将Sciter作为子控件使用。

方法1 - Sciter Bootstrap

这里使用Sciter Bootstrap,这是一个在线自动化工具,可以为创建WinForms+ Sciter项目。如果是从头开始,可以使用这种方法。该项目已经安装了SciterSharp NuGet,并且包含了样板代码。

访问 ,输入项目标题,选择C#- Classic desktop部分中的WinForms单选按钮,然后点击下载按钮。解压后,只需在Visual Studio中打开解决方案,编译并运行即可!

方法2 - 基于代码

如果已经有一个WinForms项目,或者不想使用Sciter Bootstrap,需要手动安装SciterSharp并将sciter.dll添加到项目中。

打开或创建一个新的WinForms项目。安装SciterSharp NuGet:

PM> Install-Package SciterSharpWindows

将sciter.dll添加到项目中(右键点击项目,然后选择'添加 / 现有项..')。注意:必须根据项目属性/构建标签中选择的'平台目标',添加适当的x86或x64版本的sciter.dll。

在sciter.dll的属性窗口中,将'复制到输出目录'属性配置为'始终复制',这样在运行项目时就能找到sciter DLL:

编辑Form1的代码后台(点击Form1.cs并按F7),使其看起来像:

using System; using System.Drawing; using System.Windows.Forms; using SciterSharp.WinForms; namespace ProcessTable { public partial class Form1 : Form { private SciterControl _sciter_ctrl; public Form1() { InitializeComponent(); _sciter_ctrl = new SciterControl(); _sciter_ctrl.Location = new Point(15, 15); _sciter_ctrl.Size = new Size(500, 350); _sciter_ctrl.HandleCreated += SciterControl1_HandleCreated; Controls.Add(_sciter_ctrl); } private void SciterControl1_HandleCreated(object sender, EventArgs e) { // 进行任何需要的初始化 _sciter_ctrl.SciterWnd.LoadHtml( "" ); } } }

注意只是将SciterControl直接添加到主窗体的Controls集合中。如果需要,可以调整位置、大小和父控件。

为了加载控件的实际HTML,需要等待其窗口句柄被创建,这就是为什么初始化必须在HandleCreated事件中进行。编译并运行,输出应该如下所示:

方法3 - 基于工具箱

如果更喜欢传统的拖放控件到工具箱中进行WYSIWYG(所见即所得)的UI设计,可以按照这种方法操作。在设计器中,可以添加任意数量的控件,并且可以将控件停靠在父控件中。

首先需要配置工具箱,以便SciterControl出现在列表中。

按照方法2,必须安装SciterSharp NuGet并将sciter.dll添加到项目中。打开Form1的设计器,打开工具箱,右键点击它并选择选择项目,点击浏览,然后定位SciterSharpWindows.dll;SciterControl应该出现在工具箱列表中。从工具箱拖放到设计器中,duuuuu...

注意,它最终并不是真正的WYSIWYG,因为不能在设计时预览加载了HTML的Sciter控件。相反,得到的是以下内容:

注意在图片中添加了两个Sciter控件(右边的一个停靠了),它们只是显示了一些应该如何处理这个控件的说明,比如加载HTML。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485