【问题标题】:Get (altered) textarea content from webBrowser element in C#从 C# 中的 webBrowser 元素获取(更改的)文本区域内容
【发布时间】:2015-04-04 04:37:19
【问题描述】:
我已经在网上搜索了 2 天,并且即将放弃这个,但我非常接近最终解决方案......所以你是我最后的希望。 ;)
我制作了一个带有 Windows 窗体 GUI 的小 C# 应用程序,它使用 webBrowser 元素来显示嵌入了 TinyMCE 编辑器的 HTML 文件 - 这样我得到了一个带有可自定义编辑器功能的漂亮窗口,我可以完美地满足我的需求项目。
由于在 stackoverflow 上发布了此解决方案,我可以毫无问题地设置此编辑器窗口的 textarea 输入:https://stackoverflow.com/a/16322324/3498545
但是,我在从这个文本区域读取文本时遇到了很大的麻烦。如果我在上面的解决方案中按 ID 读取元素(用于设置内容),我会得到旧文本,因为 TinyMCE 从未真正保存更改。
但是我如何获得我的用户将通过 TinyMCE 在 textarea 中进行的输入?有什么方法可以触发以 HTML 格式发送的表单以获取此输入?
非常感谢您的帮助!
【问题讨论】:
标签:
c#
windows
forms
tinymce
textarea
【解决方案1】:
好的,回答我自己的问题(也许其他人以后会发现这很有用):
TinyMCE 的更改不会实时写回 textarea 字段,所以我不得不解决这个问题。一种解决方案是在 javascript 标头中添加一些内容,将每个更改立即写回 textarea,但这给我带来了问题,因为此时不涉及 TinyMCE 代码清理。
我的解决方案是临时创建一个新文件,在其中将 TinyMCE 字段的输入直接写入源代码,在 C# 中读取它是小菜一碟。
所需的 javascript 代码如下所示:
setup : function(editor){
editor.on('submit', function (){
tinymce.triggerSave();
document.writeln("<!DOCTYPE html><html><body><div id='content'>"+document.getElementById('textarea').value+"</div></body></html>")
document.close()
});
}
之后,您可以使用以下代码读取 C# 中的内容:
webBrowser.Document.GetElementById("content").InnerHtml
现在我可以将 HTML 格式的代码存储在我的 SQL 数据库中,可以使用闪亮的界面进行管理和编辑。 ;)