在一个
WebBrowser
控制。它内置了对常见html文本编辑功能的支持,如:
Ctrl键
B
将选定内容加粗
Ctrl键
+
我
使所选内容倾斜
Ctrl键
+
将所选内容加下划线
Ctrl键
+
选择所有文本
Ctrl键
+
C
复制选择的步骤
Ctrl键
+
十
剪切所选内容
+
五
Ctrl键
+
插入链接的步骤
但是,为了获得更好的用户体验,可以依赖DOM
document
WebBrower
使用它的
execCommand
方法和容易运行的命令
Bold
,
Italic
,
Underline
,
InsertOrderedList
,
InsertUnorderedList
InsertImage
,
FormatBlock
,
ForeColor
,
BackColor
,等等。
webBrowser1.Document.ExecCommand("InsertOrderedList", false, null);
Examlpe-Windows窗体HTML编辑器
在这里,我将分享一个C应用程序的示例,并向您展示如何轻松实现HTML编辑器。
public class HtmlEditor
{
WebBrowser webBrowser;
private dynamic doc;
private dynamic contentDiv;
public HtmlEditor(WebBrowser webBrowserControl, string htmlContent)
{
webBrowser = webBrowserControl;
webBrowser.DocumentText = @"
webBrowser.DocumentCompleted += (s, e) =>
{
doc = webBrowser.Document.DomDocument;
contentDiv = doc.getElementsByTagName("div")[0];
contentDiv.innerHtml = htmlContent;
};
}
public string HtmlContent => contentDiv.InnerHtml;
public void Bold() { doc.execCommand("bold", false, null); }
public void Italic() { doc.execCommand("italic", false, null); }
public void Underline() { doc.execCommand("underline", false, null); }
public void OrderedList() { doc.execCommand("insertOrderedList", false, null); }
public void UnorderedList() { doc.execCommand("insertUnOrderedList", false, null); }
public void ForeColor(Color color)
{
doc.execCommand("foreColor", false, ColorTranslator.ToHtml(color));
}
public void BackColor(Color color)
{
doc.execCommand("backColor", false, ColorTranslator.ToHtml(color));
}
public void InsertImage(Image image)
{
var bytes = (byte[])new ImageConverter().ConvertTo(image, typeof(byte[]));
var src = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
doc.execCommand("insertImage", false, src);
}
public void Heading(Headings heading)
{
doc.execCommand("formatBlock", false, $"");
}
public enum Headings { H1, H2, H3, H4, H5, H6 }
}
要使用这个HTML编辑器类,只需
控件
控制
Form
并按以下方式初始化编辑器:
HtmlEditor editor;
private void Form1_Load(object sender, EventArgs e)
{
var html = @"Some html content";
editor = new HtmlEditor(webBrowser1, html);
}
然后你可以使用
ToolStrip
显示可用命令并运行命令。例如:
private void OrderedListButton_Click(object sender, EventArgs e)
{
editor.OrderedList();
}
private void ImageButton_Click(object sender, EventArgs e)
{
using (var ofd = new OpenFileDialog())
{
ofd.Filter = "Image files|*.png;*.jpg;*.gif;*.jpeg;*.bmp";
if (ofd.ShowDialog() == DialogResult.OK)
{
using (var image = Image.FromFile(ofd.FileName))
{
editor.InsertImage(image);
}
}
}
}