按钮单击时删除RichTextBox中的段落

时间:2014-09-18 18:38:18

标签: c# wpf richtextbox flowdocument

我有一个RichTextBox和一些Buttons(TEMPLET1,TEMPLET2,TEMPLET3....)。单击按钮时,第一次将{2}段文本添加到FlowDocument的{​​{1}}。

以下是该应用程序的屏幕截图。
/> enter image description here

我的问题是,当我第二次点击相应的模板按钮时,如何从RichTextBox删除特定模板。

欢迎任何想法。如果有人可以提供示例代码,那就太棒了。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

我不清楚删除部分。您是想将其隐藏在屏幕上还是一起删除标签?

如果您只想将其隐藏在屏幕上,我有一个简单的解决方案。

修改 在您向我提供详细信息后更改了答案。

MainWindow.xaml

<DockPanel>
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
        <Button Content="Template 1" Click="Button_Click_1" Focusable="False"/>
        <Button Content="Template 2" Click="Button_Click_2" Focusable="False"/>
        <Button Content="Template 3" Click="Button_Click_3" Focusable="False"/>
        <Button Content="Template 4" Click="Button_Click_4" Focusable="False"/>
    </StackPanel>
    <RichTextBox x:Name="rchOne">
        <FlowDocument x:Name="flowDoc" />
    </RichTextBox>
</DockPanel>

MainWindow.cs

public partial class MainWindow : Window
{
    private bool paraOneAdded = false;
    private bool paraTwoAdded = false;
    private bool paraThreeAdded = false;
    private bool paraFourAdded = false;
    public MainWindow()
    {
        InitializeComponent();
    }



    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        if (!paraOneAdded)
        {
            Paragraph para = new Paragraph();
            para.Name = "temp1";
            para.Inlines.Add(new Bold(new Run("Template 1.")));
            para.Inlines.Add(new LineBreak());
            para.Inlines.Add("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean Condimentum, orci eu placerat interdum, odio lacus faucibus ex, et viverra justo sem nec augue.");
            flowDoc.Blocks.Add(para);
            paraOneAdded = true;
        }
        else
        {
            var myPara = flowDoc.Blocks.FirstOrDefault(p => p.Name == "temp1");
            if (myPara != null)
            {
                flowDoc.Blocks.Remove(myPara);
                paraOneAdded = false;
            }
        }
    }

    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        if (!paraTwoAdded)
        {
            Paragraph para = new Paragraph();
            para.Name = "temp2";
            para.Inlines.Add(new Bold(new Run("Template 2.")));
            para.Inlines.Add(new LineBreak());
            para.Inlines.Add("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean Condimentum, orci eu placerat interdum, odio lacus faucibus ex, et viverra justo sem nec augue.");
            flowDoc.Blocks.Add(para);
            paraTwoAdded = true;
        }
        else
        {
            var myPara = flowDoc.Blocks.FirstOrDefault(p => p.Name == "temp2");
            if (myPara != null)
            {
                flowDoc.Blocks.Remove(myPara);
                paraTwoAdded = false;
            }
        }

    }

    private void Button_Click_3(object sender, RoutedEventArgs e)
    {
        if (!paraThreeAdded)
        {
            Paragraph para = new Paragraph();
            para.Name = "temp3";
            para.Inlines.Add(new Bold(new Run("Template 3.")));
            para.Inlines.Add(new LineBreak());
            para.Inlines.Add("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean Condimentum, orci eu placerat interdum, odio lacus faucibus ex, et viverra justo sem nec augue.");
            flowDoc.Blocks.Add(para);
            paraThreeAdded = true;
        }
        else
        {
            var myPara = flowDoc.Blocks.FirstOrDefault(p => p.Name == "temp3");
            if (myPara != null)
            {
                flowDoc.Blocks.Remove(myPara);
                paraThreeAdded = false;
            }
        }

    }

    private void Button_Click_4(object sender, RoutedEventArgs e)
    {
        if (!paraFourAdded)
        {
            Paragraph para = new Paragraph();
            para.Name = "temp4";
            para.Inlines.Add(new Bold(new Run("Template 4.")));
            para.Inlines.Add(new LineBreak());
            para.Inlines.Add("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean Condimentum, orci eu placerat interdum, odio lacus faucibus ex, et viverra justo sem nec augue.");
            flowDoc.Blocks.Add(para);
            paraFourAdded = true;
        }
        else
        {
            var myPara = flowDoc.Blocks.FirstOrDefault(p => p.Name == "temp4");
            if (myPara != null)
            {
                flowDoc.Blocks.Remove(myPara);
                paraFourAdded = false;
            }
        }

    }
}

我只是简单地切换Visibility的{​​{1}}。

我修改了代码,以便您现在可以删除添加的模板。我希望这会有所帮助。