gpt4 book ai didi

c# - 在包含超链接的富文本框 v5 中选择文本时出现奇怪的偏移

转载 作者:太空狗 更新时间:2023-10-29 23:47:04 24 4
gpt4 key购买 nike

当我使用 RichTextBox.Select(int start, int length) 函数选择包含超链接的格式文本框中的文本时,当我尝试选择超链接之后的任何文本时,选择内容会发生一些变化。

当我删除超链接时,选择工作正常。

编辑:我使用 RichTextBox 5(Visual Studio 中的默认版本是版本 4)

public class RichText50W : RichTextBox
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary(string lpFileName);
protected override CreateParams CreateParams
{
get
{
CreateParams prams = base.CreateParams;
if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
{
prams.ClassName = "RICHEDIT50W";
}
return prams;
}
}
}

该问题仅在 richtextbox 5+ 时出现。

这些图像显示了问题和行为差异。

如果您尝试这样做,请确保将 richtextboxes 的 HideSelection 属性设置为“false”。

选择功能显示在按钮上。

Select (10, 1)

对于RTB5,应在上图中选择“文本”中的'e'。

Select (40, 1)

Select (46, 1)

显然 RTB5 选择了一些隐藏文本。

我需要它仅根据可见文本进行选择。

RTB 4 在使用表格时出现问题,所以我不想使用它。

我使用.NET 2.0

编辑:要在 Visual Studio 中尝试此操作,请从默认的 richtextbox 开始并将其声明更改为 RichText50W 而不是 RichTextBox

RichEdit 6 也有同样的问题。

谢谢

最佳答案

根据我自己的经验,版本“RICHEDIT50W”在与嵌入式超链接或隐藏文本(使用 rtf 代码\v\v0)一起使用时会严重损坏。

在您的 v5 框中,Text.Length 属性报告 14 个字符 — 它显示的内容。 TextLength 属性报告 51 个字符。 SelectionStartSelectionLength 属性都报告“隐藏文本”数字,但该控件不再提供获取隐藏文本的方法。这意味着当您的富文本包含隐藏字符时,“文本”和相关的“文本选择”信息将变得不可用。

我认为唯一的解决办法是如果有隐藏字符或者浏览市场寻找更好的富文本控件,就不要使用“RICHEDIT50W”版本。

关于c# - 在包含超链接的富文本框 v5 中选择文本时出现奇怪的偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com