Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RichTextBox(.NET Winforms)问题(或备选方案)_.net_Richtextbox_Wysiwyg_Rtf_Html Editor - Fatal编程技术网

RichTextBox(.NET Winforms)问题(或备选方案)

RichTextBox(.NET Winforms)问题(或备选方案),.net,richtextbox,wysiwyg,rtf,html-editor,.net,Richtextbox,Wysiwyg,Rtf,Html Editor,我对.Net的控制有问题。它似乎不支持表格单元格格式,这很有趣,因为在我创建表格的大多数时候,我希望单元格内容正确对齐(数字、货币) 如果我试图在RichTextBox中打开写字板文档,它会忽略(实际上会删除)单元格对齐命令。我尝试了几种变通办法,但没有成功 有人能想出一个办法来解决这个问题吗?(不使用固定宽度的字体和空格)这将是最好的解决方案,因为其他代码已经可以正常工作了,所以如果只需要一个肮脏的黑客,那就太好了 或者您可以推荐一个开源的.Net富文本编辑器替代品吗?我需要一个用户控件,我可

我对.Net的控制有问题。它似乎不支持表格单元格格式,这很有趣,因为在我创建表格的大多数时候,我希望单元格内容正确对齐(数字、货币)

如果我试图在RichTextBox中打开写字板文档,它会忽略(实际上会删除)单元格对齐命令。我尝试了几种变通办法,但没有成功

  • 有人能想出一个办法来解决这个问题吗?(不使用固定宽度的字体和空格)这将是最好的解决方案,因为其他代码已经可以正常工作了,所以如果只需要一个肮脏的黑客,那就太好了

  • 或者您可以推荐一个开源的.Net富文本编辑器替代品吗?我需要一个用户控件,我可以嵌入到我的Windows窗体中,并以编程方式访问内容(创建内容或附加内容)。我在网上搜索了一段时间,但只找到了web(Ajax/Javascript)控件

  • 我也可以使用HTML WYSIWYG编辑器,但它们基本上都是使用MSHTML嵌入和编辑的IE浏览器,在Winforms应用程序中使用它感觉有点奇怪(也许我错了)。在这种情况下,我们需要一些额外的时间来实现HTML的内容生成器——尽管它比RTF IMHO更容易阅读和生成

  • 你们觉得什么最适合这个目的


  • 如果您仍然使用.net winforms路径,然后从RichTextBox继承并添加以下代码,它将把RichTextBox转换为“可用”的内容:

    来源于

    祝你今天愉快:)

    3.我也可以使用HTML WYSIWYG编辑器,但它们基本上都是使用MSHTML嵌入和编辑的IE浏览器,在Winforms应用程序中使用它感觉有点奇怪(也许我错了)

    我已经编写了一个HTML所见即所得编辑器:the。它是纯托管代码,不依赖于浏览器;它导出.NETAPI,允许您以编程方式访问其内容


    即将发布的下一个版本(几天后)将支持单元格对齐(通过支持CSS“文本对齐”属性)。

    非常感谢,我将尝试它。最后我们继续使用RichText,客户并不太在意它的问题。是的,这看起来很有希望。这个版本的RichTextEdit似乎支持更广泛的Rtf规范,尽管它呈现的某些内容与旧版本略有不同,因此我们必须在Rtf生成器中进行一些修改。谢谢一些lite基准测试数据:基于此示例将723行XML文档加载到控件中时,所需时间从1700ms减少到1200ms,因此性能得到了显著提升,但总体而言,MS丰富的编辑控件仍有一些不尽如人意的地方。谢谢,看起来很有趣,我一定会尝试。
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    static extern IntPtr LoadLibrary(string lpFileName);
    
    protected override CreateParams CreateParams
    {
        get
        {
           CreateParams cparams = base.CreateParams; 
           if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
           {
              cparams.ClassName = "RICHEDIT50W";
           }
           return cparams;
         }
    }