相关疑难解决方法(0)

C#RichEditBox的性能极慢(加载4分钟)

RichEditBoxC#中的控件(我使用VS 2005)性能不佳.我将带有45.000条彩色文本行的2.5 MB的RTF文件加载到控件中,需要4分钟.我将相同的RTF加载到Windows XP的Wordpad中的RTF控件中,并在2秒内加载.

写字板的速度比我的应用程序快120倍.

是什么原因,我该如何解决?

c# performance richtextbox winforms

16
推荐指数
1
解决办法
5393
查看次数

RichTextBox中RTF文件中的超链接断开

我正在使用a RichTextBox来显示RTF文件,其中包含一个超链接.链接文本不是URL(目标有效的URL).RTF是使用Word创建的.Word和写字板都能正确识别链接(写字板不会启动链接,但会显示相应的手形光标).

当我将RTF加载到RichTextBox链接时,链接显示格式正确(蓝色和下划线),但不是表现得像链接,当光标在链接上移动时它仍然是工字梁,LinkClicked事件不会触发,它实际显示链接后尖括号之间的目标(这似乎不正确).由于链接文本不是URL,DetectUrls因此在这里没有帮助.

RichTextBox没有正确处理这些链接的原因,或者是一种使它们按预期工作的方法?

这是代码.

TipView.Rtf = tips[tipIndex];
// I've also tried TipView.LoadFile, with identical result
Run Code Online (Sandbox Code Playgroud)

要重现此问题,请使用Word(我正在使用2000)创建一个RTF文档,其中包含一个文本不是URL但是以有效URL为目标的链接,并以编程方式将.rtf文件加载到RichTextBox(我使用的是.NET 2.0)在C#Express 2008中.

.net c# rtf richtextbox winforms

7
推荐指数
1
解决办法
3169
查看次数

RichTextBox无法显示Unicode数学字母数字符号

我无法让WinForms RichTextBox显示一些Unicode字符,特别是数学字母数字符号(但问题很可能不仅限于那些).

令人惊讶的是,相同的字符可以TextBox使用相同(默认)字体以普通或多行显示.即使我将字体更改为例如"Arial"或"Lucida",我也会得到相同的结果.

TextBox与RichTextBox

屏幕截图来自Windows 10,但我在Windows 7上得到了相同的结果.该示例显示了ascii小广告,后跟数学斜体sans-serif小alpha-delta.

我正在使用Visual Studio 2017和.NET 4.6.1.

一个简单的测试代码:

private void InitializeComponent()
{
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.richTextBox1 = new System.Windows.Forms.RichTextBox();
    // ...
    this.SuspendLayout();
    // 
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(25, 38);
    this.textBox1.Multiline = true;
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(182, 108);
    this.textBox1.TabIndex = 0;
    this.textBox1.Text = "abcd ";
    // 
    // richTextBox1
    // 
    this.richTextBox1.Location = new System.Drawing.Point(213, 38);
    this.richTextBox1.Name = "richTextBox1";
    this.richTextBox1.Size = new System.Drawing.Size(179, 108);
    this.richTextBox1.TabIndex …
Run Code Online (Sandbox Code Playgroud)

.net c# unicode richtextbox winforms

7
推荐指数
1
解决办法
1033
查看次数

使用较新的RichEdit版本?

我尝试在C#上使用RichTextBox,但发现它对于处理数千行长的文本来说太慢了。经过一番谷歌搜索后,我发现这是因为默认情况下.net使用RichEdit 2.0,而解决方案是改为使用RichEdit 5.0。

C#RichEditBox具有极慢的性能(加载4分钟),已解决

它工作正常,文本显示的时间是几秒钟,而不是几分钟。但是,作为那种不关心个人项目兼容性的人,我想找到RichEdit的更高版本。我发现最新版本是8.0,整个版本都作为riched20.dll发行,部分包含在msftedit.dll中。

http://blogs.msdn.com/b/murrays/archive/2006/10/14/richedit-versions.aspx

http://blogs.msdn.com/b/murrays/archive/2012/03/03/richedit-8-0-preview.aspx

但是,msdn的文档以4.1停止,(我认为是)该项目的一名开发人员声称他们不再在上述博客中提供公共文档。

https://msdn.microsoft.com/zh-CN/library/windows/desktop/bb787873(v=vs.85).aspx

到目前为止,我已经能够明确运行msftedit.dll的RichEdit 2.0和5.0,但是所有其他版本都使我难以理解。例如,尽管约翰·克伦肖(John Crenshaw)评论说RichEdit 6.0可以正常工作,但我却无法使用它。除上述msftedit-2.0和5.0组合以外的任何尝试都将导致Application.Run()出现“窗口类名称无效”错误。(该程序在C#中,但是我没有这样标记它,因为我担心这个问题可能不是C#特定的问题。)该代码几乎是第一个链接中解决方案的精确副本,如下所示:

class Textbox : RichTextBox
{
[DllImport("kernel32.dll", EntryPoint = "LoadLibraryW", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern IntPtr LoadLibraryW(string s_File);

public static IntPtr LoadLibrary(string s_File)
{
    IntPtr h_Module = LoadLibraryW(s_File);
    if (h_Module != IntPtr.Zero)
        return h_Module;

    int s32_Error = Marshal.GetLastWin32Error();
    throw new Exception("LoadLibrary Failed with: "+s32_Error);
}

protected override CreateParams CreateParams
{
    get
    {
        CreateParams i_Params = base.CreateParams;
        try
        {
            // Available since XP SP1
            LoadLibrary("MsftEdit.dll"); …
Run Code Online (Sandbox Code Playgroud)

.net richedit richtextbox

5
推荐指数
2
解决办法
2959
查看次数

禁用 RichTextBox 或 TextBox 中的选择突出显示

如何禁用我的 Windows 窗体应用程序的RichTexBoxTextBox在我的 Windows 窗体应用程序中的选择突出显示,如图所示。

在此处输入图片说明

我需要将选择突出显示颜色从 更改BlueWhite,因为我需要隐藏TextBoxRichTextBox一直隐藏选择。我尝试使用RichTextBox.HideSelection = true,但它不像我预期的那样工作。

c# textbox richtextbox selection winforms

4
推荐指数
1
解决办法
3911
查看次数

标签 统计

richtextbox ×5

c# ×4

winforms ×4

.net ×3

performance ×1

richedit ×1

rtf ×1

selection ×1

textbox ×1

unicode ×1