想用C#做一款类似为知笔记的简易版html格式文档编辑器

哈利_蜘蛛侠 2019-08-28 08:45:09
请问需要准备哪些东西呢?功能还是比较简单的,工具栏那里,能够设置字体方案、大小、颜色,再加上插入图片就差不多了。那么用C#来做的话,需要准备哪些知识?
这里的难点在于,如何实现对Html文档进行编辑?webbrowser控件好像并不支持编辑(我设想过在每次玩家尝试去编辑的时候,利用第三方库HtmlAgilityPack提供的HtmlDocument类来解析并更新整个Html文档、然后重新载入,但是这样不知道怎么具体实现,而且感觉挺恶心的~);而如果不用Html文档、而是用一般的RichTextBox来编辑富文本的话,由于我设想的文档形式还是类似Html那样基于标签的,所以想要做一些自定义标签以便于实现更多的功能(比如默认中文字体、默认英文字体、重点内容标记等等),而用这种控件好像不能满足我的要求。
...全文
412 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
皮皮熊_1989 2019-09-09
  • 打赏
  • 举报
回复
网上去搞编辑器,你很难比人家做的更智能,不要做重复造车的事情。
哈利_蜘蛛侠 2019-09-02
  • 打赏
  • 举报
回复
引用 10 楼 asq985 的回复:
网上搜,例子一大把
上网搜了搜,原来是BrowseMode。另外我直接在代码里按F1键,通过官方文档里的那个链接得到的是C++语言里的枚举值,并不是C#的;不过还好,在JavaScript语言里的枚举值适用于C#。 然后这些官方文档说已经很久没维护了,上次维护的时间还是2015年;所以难道是有什么替代的产品了、现在的不鼓励用了吗?
asq985 2019-09-02
  • 打赏
  • 举报
回复
引用 9 楼 哈利_蜘蛛侠 的回复:
[quote=引用 8 楼 asq985 的回复:] 当然可以,能实现HTML编辑器基本功能,不是特殊要求,能满足编辑需求 比如插入一个图片: insertImagesForms c = new insertImagesForms(); if (c.ShowDialog()== DialogResult.OK && !string.IsNullOrEmpty(c.picture)) { IHTMLDocument2 doc = (IHTMLDocument2)this.w1.Document.DomDocument; IHTMLTxtRange range = doc.selection.createRange() as IHTMLTxtRange; range.pasteHTML(@c.picture); }
研究了一下,越来越糊涂了。现在有两个问题: 第一个是,这个命令

webbrowser1.Document.ExecCommand("EditMode", false, null);
的反向命令是什么?就是调用了后怎么退出编辑模式? 第二个是,为什么在官方文档里,我想看Document.ExecCommand()的第一个参数可以取那些值时,它给我列出来的是一些枚举值、而不是字符串呢? 最后,那里可以找到webbrowser的比较详尽的初级使用说明呢?我现在只是会一些基本的C#语法、外加会用一些简单的控件而已。[/quote] 网上搜,例子一大把
哈利_蜘蛛侠 2019-09-02
  • 打赏
  • 举报
回复
引用 12 楼 asq985 的回复:
2024958085 要传给我以前的官方资料吗?
asq985 2019-09-02
  • 打赏
  • 举报
回复
引用 11 楼 哈利_蜘蛛侠 的回复:
[quote=引用 10 楼 asq985 的回复:] 网上搜,例子一大把
上网搜了搜,原来是BrowseMode。另外我直接在代码里按F1键,通过官方文档里的那个链接得到的是C++语言里的枚举值,并不是C#的;不过还好,在JavaScript语言里的枚举值适用于C#。 然后这些官方文档说已经很久没维护了,上次维护的时间还是2015年;所以难道是有什么替代的产品了、现在的不鼓励用了吗?[/quote] 你QQ多少,我加你,给你传一份
asq985 2019-09-01
  • 打赏
  • 举报
回复
引用 7 楼 哈利_蜘蛛侠 的回复:
[quote=引用 5 楼 asq985 的回复:] webbrowser支持编辑 webbrowser1.DocumentText = string.Empty; webbrowser1.Document.ExecCommand("EditMode", false, null); webbrowser1.Document.ExecCommand("LiveResize", false, null); 比如文字加粗 webbrowser1.Document.ExecCommand("Bold", false, null);
不知道允不允许自定义标签。另外想知道哪里有webbrowser的比较入门级的使用手册之类的。网上搜到的比较凌乱。[/quote] 当然可以,能实现HTML编辑器基本功能,不是特殊要求,能满足编辑需求 比如插入一个图片: insertImagesForms c = new insertImagesForms(); if (c.ShowDialog()== DialogResult.OK && !string.IsNullOrEmpty(c.picture)) { IHTMLDocument2 doc = (IHTMLDocument2)this.w1.Document.DomDocument; IHTMLTxtRange range = doc.selection.createRange() as IHTMLTxtRange; range.pasteHTML(@c.picture); }
哈利_蜘蛛侠 2019-09-01
  • 打赏
  • 举报
回复
引用 8 楼 asq985 的回复:
当然可以,能实现HTML编辑器基本功能,不是特殊要求,能满足编辑需求 比如插入一个图片: insertImagesForms c = new insertImagesForms(); if (c.ShowDialog()== DialogResult.OK && !string.IsNullOrEmpty(c.picture)) { IHTMLDocument2 doc = (IHTMLDocument2)this.w1.Document.DomDocument; IHTMLTxtRange range = doc.selection.createRange() as IHTMLTxtRange; range.pasteHTML(@c.picture); }
研究了一下,越来越糊涂了。现在有两个问题: 第一个是,这个命令

webbrowser1.Document.ExecCommand("EditMode", false, null);
的反向命令是什么?就是调用了后怎么退出编辑模式? 第二个是,为什么在官方文档里,我想看Document.ExecCommand()的第一个参数可以取那些值时,它给我列出来的是一些枚举值、而不是字符串呢? 最后,那里可以找到webbrowser的比较详尽的初级使用说明呢?我现在只是会一些基本的C#语法、外加会用一些简单的控件而已。
哈利_蜘蛛侠 2019-08-30
  • 打赏
  • 举报
回复
引用 3 楼 XBodhi. 的回复:
html 用 UEditor ,或其他的 第三方富文本编辑器 WP 和 WPF 用 Richtextbox 或是 WebOffice
UEditor是开源的,貌似不错,不过支持的语言里貌似没有C#。kindeditor支持C#,但是不支持自己修改。
哈利_蜘蛛侠 2019-08-30
  • 打赏
  • 举报
回复
引用 5 楼 asq985 的回复:
webbrowser支持编辑 webbrowser1.DocumentText = string.Empty; webbrowser1.Document.ExecCommand("EditMode", false, null); webbrowser1.Document.ExecCommand("LiveResize", false, null); 比如文字加粗 webbrowser1.Document.ExecCommand("Bold", false, null);
不知道允不允许自定义标签。另外想知道哪里有webbrowser的比较入门级的使用手册之类的。网上搜到的比较凌乱。
XBodhi. 2019-08-30
  • 打赏
  • 举报
回复
引用 4 楼 哈利_蜘蛛侠 的回复:
[quote=引用 3 楼 XBodhi. 的回复:] html 用 UEditor ,或其他的 第三方富文本编辑器 WP 和 WPF 用 Richtextbox 或是 WebOffice
UEditor是开源的,貌似不错,不过支持的语言里貌似没有C#。kindeditor支持C#,但是不支持自己修改。[/quote] 你可以百度下 。确实,他是 JS 的,你可以百度下 有支持 C# 的
asq985 2019-08-30
  • 打赏
  • 举报
回复
webbrowser支持编辑 webbrowser1.DocumentText = string.Empty; webbrowser1.Document.ExecCommand("EditMode", false, null); webbrowser1.Document.ExecCommand("LiveResize", false, null); 比如文字加粗 webbrowser1.Document.ExecCommand("Bold", false, null);
哈利_蜘蛛侠 2019-08-29
  • 打赏
  • 举报
回复
引用 1 楼 assky124 的回复:
可以用第三方库啊 UEditor 之类的。 纯客户端可以用WPF啊,支持HTML的好像,有例子可以做到和Word差不多,你自己网上找找。 VSCODE开源的,有兴趣可以去读读。
昨晚查了好久,貌似比较灵活又比较简单的方式就是WPF+mshtml了,不过不知道是否真的可以满足我的要求。
assky124 2019-08-29
  • 打赏
  • 举报
回复
可以用第三方库啊 UEditor 之类的。 纯客户端可以用WPF啊,支持HTML的好像,有例子可以做到和Word差不多,你自己网上找找。 VSCODE开源的,有兴趣可以去读读。
XBodhi. 2019-08-29
  • 打赏
  • 举报
回复
html 用 UEditor ,或其他的 第三方富文本编辑器 WP 和 WPF 用 Richtextbox 或是 WebOffice

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧