从 C# 中的 webBrowser 元素获取(更改的)textarea 内容

Get (altered) textarea content from webBrowser element in C#

我已经在网上搜索了 2 天了,正准备放弃这个,但我离最终解决方案太近了……所以你是我最后的希望。 ;)

我用 Windows Forms GUI 制作了一个小的 C# 应用程序,它使用 webBrowser 元素来显示一个 HTML 嵌入了 TinyMCE 编辑器的文件 - 这样我就得到了一个不错的 window 具有可自定义的编辑器功能,我可以完美地满足我在这个项目中的需要。 由于在 Whosebug 上发布了此解决方案,我可以毫无问题地为此编辑器 window 设置文本区域输入:

但是,我在阅读此文本区域中的文本时遇到了很大的麻烦。如果我在上面的解决方案中按 ID 读取元素(用于设置内容),我得到的是旧文本,因为 TinyMCE 从未真正保存更改。 但是我如何通过 TinyMCE 获得我的用户将在 textarea 中进行的输入?有什么方法可以触发 HTML 中的表单发送以获得此输入吗?

非常感谢您的帮助!

好吧,回答我自己的问题(也许其他人以后会发现这个有用):

TinyMCE 的更改不会实时写回到 textarea 字段,所以我不得不解决这个问题。一种解决方案是在 javascript header 中添加一些内容,将每个更改立即写回文本区域,但这给我带来了问题,因为此时不涉及 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 数据库中,可以使用闪亮的界面进行管理和编辑。 ;)