2

この解決策をしばらく探していたので、ここに投稿します。

今、私は全体の前景色を変更することができますRichTextBox:

yourRichTextBox.Foreground = Brushes.Red;

ユーザーがカーソルで選択したテキストの色を変更することもできます。

if(!yourRichTextBox.Selection.IsEmpty){
    yourRichTextBox.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red);
}

しかし、ユーザーが次に入力するテキストの色を変更できるようにしたいと考えています。

ユーザーがテキストに入れたい色を返すカラーピッカーボックスがあります。したがって、ユーザーはRichTextBox通常の黒のフォントで入力し、カラーピッカーボタンをクリックして色を選択し、[OK]を押してから次の入力したものはその色になります。これを行う方法はありますか、それとも運が悪いのでしょうか?

私が考えることができる唯一の方法は、ユーザーが入力した各文字をキャプチャするバッファーを用意し、入力した各文字の前景プロパティを設定してからRichTextBox、アイデアに追加し直すことです?

4

2 に答える 2

1

選択に使用しているのと同じコードが機能します。例えば:

    <RichTextBox x:Name="yourRichTextBox" TextChanged="yourRichTextBox_TextChanged_1">
        <FlowDocument>
            <Paragraph>
                <Run Text="fdsfdfsda"/>
            </Paragraph>
            <Paragraph>
                <Run/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

コードビハインド:

    private void yourRichTextBox_TextChanged_1(object sender, TextChangedEventArgs e)
    {
        yourRichTextBox.Selection.ApplyPropertyValue(RichTextBox.ForegroundProperty, Brushes.Red);
    }

入力を開始すると、2 文字目以降 (最初の文字がこの変更をトリガーします) が赤になります。

于 2013-06-18T18:14:33.090 に答える