2016-05-12 23 views
-2

リッチテキストボックスに、カーソルが点滅している位置に文字列を追加したいとします。私はまた、入力したテキストの色を変更したい。たとえば、色が黒である事前に入力されたテキストがある場合、新しい文字列を入力した後、この文字列は青色になります。そして、それは私が文字列を入力するすべての時間のためにする必要があります。そして私が入力した弦は、青いままでなければなりません。ありがとうリッチテキストボックスのカーソル位置に文字列を追加する方法C#?

答えて

0

現在のカーソル位置もSelectionStartとして知られています:ここで説明したよう

は、次にそれは、ちょうどあなたが別の書式を適用することができ文とそれにテキストを追加するのは簡単なことです。

richtTextBox1.SelectionLength=0; 
richtTextBox1.SelectionColor = Color.Blue; 

は、今あなたが入力し、すべてが青になります:単にあなたがしたいすべてのSelectionXXXプロパティを SelectionStart=0を設定し、設定します。

もはやそれほど必要ではありません。 TextChangedイベントを購読する必要はありません。

カーソル位置を別のスポットに移動すると、スポットの色は独自の色になり、新しいテキストを入力するとその色が表示されます。

あなたが他のスポットに新色(青)を適用したい場合は、おそらくこのようSelectionChangedイベントをコーディングする必要があります:あなたは既にある部分を色付けしたい場合は、

private void richTextBox1_SelectionChanged(object sender, EventArgs e) 
{ 
    // you should check if there is no text selected 
    // or else any selection will be colored immediately: 
    if (richTextBox1.1.SelectionLength == 0) 
     richTextBox1.1.SelectionColor = yourNewColor; 
} 

そして、いつものようにその部分を選択して再度色を設定する必要がある新しい色があります。このためにカラーパレットを使うのがベストです!いくつかの色のLabelsを使用して、あなたが書くかもしれない:

private void colorLabel_Click(object sender, EventArgs e) 
{ 
    Color yourNewColor= ((sender) as Label).BackColor; 
    richTextBox1.1.SelectionColor = yourNewColor; 
} 

をあなたがしたい場合は、Panel's BackgroundImageで豊かなパレットの画像を使用し、そのMouseClickイベントをコーディングすることができます:私が使用する方法

private void panel1_MouseClick(object sender, MouseEventArgs e) 
{ 
    Color c = ((Bitmap)panel1.BackgroundImage).GetPixel(e.X, e.Y); 
    if (e.Button.HasFlag(MouseButtons.Left)) 
    { 
     richTextBox1.SelectionColor = c; 
    } 
    else // pick new BackColor: 
    { 
     richTextBox1.SelectionBackColor = c; 
    } 
} 
+0

私はこのコードを追加しました。テキストの色は変更されません。 文字列insertText =テキスト。 int selectionIndex = richTextBox1.SelectionStart; richTextBox1.SelectionStart = selectionIndex; richTextBox1.Text = richTextBox1.Text.Insert(selectionIndex、insertText); richTextBox1.SelectionLength = 0; richTextBox1.SelectionColor = Color.Blue; –

+0

'richTextBox1.Text ='これは間違いです。どのフォーマットでもRTBのTextプロパティを変更しないでください。そうしないと、フォーマットが混乱します。コードでテキストを挿入するには、SelectionStartを目的の位置に設定し、SelectionLength = 0にし、SelectedText = yourNewTextを書き込みます。 - あなたは何が起こっているのかを明確にする必要があります:ユーザーは新しいテキストを入力します。ユーザーの色は既存のテキストです。ORコードは新しいテキストを追加/挿入します。 SelectionColor = newColorを使用する必要がありますが、プレパレーションは異なります。 – TaW

+0

色は変わりません。私が使用したコードは: string insertText = Text; int selectionIndex = richTextBox1.SelectionStart; richTextBox1.SelectionStart = selectionIndex; richTextBox1.SelectedText = insertText; richTextBox1.SelectionColor = Color.Blue; –

0

テキストボックスからテキストが変更されているイベントに登録する必要があるので、カーソルまで入力されたテキストが表示されます。

http://www.wpf-tutorial.com/basic-controls/the-textblock-control-inline-formatting/

+0

おかげで、それはリッチテキストボックスですか? –

+0

実際に私はメモ帳などのようにテキストエディタを作成したい。 –

+0

ああ、それは私の友人とはまったく異なる質問です。私はTextBlockでこれを行うことができると思いますが、それが適切かどうか、あるいは最適な方法が他にあるかどうかは分かりません。ごめんなさい –

関連する問題