Mal*_*ist 10 rtf richtextbox winforms
显然,Microsoft提供的RichTextBox并不完全支持RTF规范.出于某种原因,它不允许多行行,而是破坏格式.
例如,以下是生成表格的RTF代码:
\par
\trowd\trgaph108\trleft36\trqc\trrh280\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\cellx2000\cellx4000\cellx6000\cellx6500\cellx8500\cellx9000\cellx11000
\pard\intbl Length of Time until Replayment\cell\cell Flate Fee Percentage\cell\cell Broker and Application Fees\cell\cell Total lien on case\cell\row
\trowd\trgaph108\trleft36\trqc\trrh280\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\cellx2000\cellx4000\cellx6000\cellx6500\cellx8500\cellx9000\cellx11000
\pard\intbl 0-6 \cell Months \cell 40% \cell\cell 310 \cell\cell\{#TOTALLIEN0-6#\}\cell\row
\trowd\trgaph108\trleft36\trqc\trrh280\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\cellx2000\cellx4000\cellx6000\cellx6500\cellx8500\cellx9000\cellx11000
\pard\intbl 7-12 \cell Months \cell 60% \cell\cell 310 \cell\cell\{#TOTALLIEN7-12#\} \cell\row
\trowd\trgaph108\trleft36\trqc\trrh280\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\cellx2000\cellx4000\cellx6000\cellx6500\cellx8500\cellx9000\cellx11000
\pard\intbl 13-18 \cell Months \cell 100% \cell\cell 310 \cell\cell\{#TOTALLIEN13-18#\} \cell\row
\trowd\trgaph108\trleft36\trqc\trrh280\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\cellx2000\cellx4000\cellx6000\cellx6500\cellx8500\cellx9000\cellx11000
\pard\intbl 19-24 \cell Months \cell 150% \cell\cell 310 \cell\cell\{#TOTALLIEN19-24#\} \cell\row
\trowd\trgaph108\trleft36\trqc\trrh280\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\cellx2000\cellx4000\cellx6000\cellx6500\cellx8500\cellx9000\cellx11000
\pard\intbl 25-36 \cell Months \cell 200% \cell\cell 310 \cell\cell\{#TOTALLIEN25-36#\} \cell
\row\trowd\trgaph108\trleft36\trqc\trrh280\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\cellx2000\cellx4000\cellx6000\cellx6500\cellx8500\cellx9000\cellx11000
\pard\intbl 37+ \cell Months \cell 300% \cell\cell 310 \cell\cell\{#TOTALLIEN37#\} \cell
Run Code Online (Sandbox Code Playgroud)
如果单词和wordpad都可以正常工作.文本太长的顶行会分成多个行,但是在Richtext框中它会做一些古怪的事情.
写字板看起来像这样: wordpad RTF表http://img231.imageshack.us/img231/2720/wordpadrtf.jpg
Richtext框如下所示:richtextbox table http://img262.imageshack.us/img262/9756/richtextboxrtf.jpg
如何使richtextbox正常工作?
Mal*_*ist 17
我找到了解决方案.显然,每个系统上都有多个RichEdit库,默认为旧版本(我认为是4.0).5.0修复了RTF解释的大部分问题.要获得使用它的RichtextBox,必须使RichTextBox惰性化,并重载CreateParams属性.
我是这样做的:
public partial class FullRichtextBox : RichTextBox {
public FullRichtextBox() :base() {
InitializeComponent();
}
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary(string lpFileName);
protected override CreateParams CreateParams {
get {
CreateParams param = base.CreateParams;
if (LoadLibrary("msftedit.dll") != IntPtr.Zero) {
param.ClassName = "RICHEDIT50W";
}
return param;
}
}
}
Run Code Online (Sandbox Code Playgroud)