RichTextbox
の文字列を特定の位置と特定の色で挿入したいとします。そこで、RichTextbox
クラスのメソッドAppendText()
の拡張を追加しようとしました。リッチテキストボックス内の特定の色で特定のインデックスにテキストを挿入します
public static void AppendText(this RichTextBox Box, string Text, Color col, int SelectionStart)
{
Box.SelectionStart = SelectionStart;
Box.SelectionLength = 0;
Box.SelectionColor = col;
Box.SelectionBackColor = col;
Box.Text = Box.Text.Insert(SelectionStart, Text);
Box.SelectionColor = Box.ForeColor;
}
私はこれをRichTextBoxExtension
というクラスで使用しようとしました。結果は私の期待どおりではありません。文字列は挿入されますが、選択された色は挿入されません。 この機能を実行する方法はありますか?
編集:この機能が必要な理由をお知らせするのは興味深いと思います。実際には、ユーザーが閉じ括弧を書くとき、私は連想の開始括弧をハイライト(またはカラー)したいと思います。 たとえば、ユーザーが(Mytext)を書き込む場合、ユーザーが「)」をタップしたときに最初の括弧が色付けされ、この括弧の上に選択が保持されます。
すべての書式が失われることになります:
あなたのコードは、この(私はハンスをほのめかしたものを離れて与える)のようになります。代わりにSelectionTextプロパティを割り当てる必要があります。 SelectionStartプロパティとSelectionLengthプロパティを復元する必要があります。あなたは自分で色の選択のバグを発見します。 –
私はそれがWinFormsの質問だと知っていますが、WPF-o-sphereから誰かが遭遇した場合、 'Document'プロパティを使ってRichTextBoxの基礎となる' FlowDocument'に簡単にアクセスできます。 - これははるかに強力な編集APIを持っています(また、スペルチェックなどの他の高度な機能のために、WinFormsエディタより優先されるべきです)。 - WinFormsに閉じ込められている場合は、WPF Rich Textエディタを「ElementHost」コントロールでホストすることを検討する価値があります。 – BrainSlugs83