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」に設定してください。
ボタンには選択機能が表示されます。
RTB5 の場合、上の画像で「テキスト」の「e」を選択する必要があります。
RTB5 は隠しテキストを選択しているようです。
表示されているテキストのみに基づいて選択する必要があります。
RTB 4 はテーブルの使用に問題があるため、使用したくありません。
.NET 2.0 を使用しています
編集: Visual Studio でこれを試すには、既定の richtextbox から始めて、その宣言を RichTextBox ではなく RichText50W に変更します。
また、RichEdit 6 にも同じ問題があります。
ありがとう