2

次のようなフロードキュメントがあります。

var mcFlowDoc = new FlowDocument();
var para = new Paragraph();
para.Inlines.Add(new Run("This is the first line."));
para.Inlines.Add(new Run("This is the second line."));
para.Inlines.Add(new Run("This is the third line."));
mcFlowDoc.Blocks.Add(para);
richTextBox.Document = mcFlowDoc;

そのテキストの任意の部分をクリックして、行の 1 つの背景を変更する必要があります。

まず、特定のインラインの背景を (マウス クリックに関係なく) 変更しようとしていますが、変更できません。

どんな助けでも大歓迎です。

編集: 実行の背景色を変更できましたが、すべての実行を再度追加して再描画する必要がありました。より速く動作する必要があるため、すべてを再度追加せずに実行を変更しようとしています。

4

1 に答える 1

2

たとえば、サブスクライブするStyleために forを追加できますRunMouseLeftButtonDown

<RichTextBox.Resources>
    <Style TargetType="Run">
        <EventSetter Event="MouseLeftButtonDown" Handler="Run_Click" />
    </Style>
</RichTextBox.Resources>

このようにイベントを処理します

void Run_Click(object sender, MouseButtonEventArgs e)
{
    Run run = sender as Run;
    run.Background = Brushes.Red;
}
于 2013-07-28T10:34:09.783 に答える