Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单击按钮删除RichTextBox中的段落_C#_Wpf_Richtextbox_Flowdocument - Fatal编程技术网

C# 单击按钮删除RichTextBox中的段落

C# 单击按钮删除RichTextBox中的段落,c#,wpf,richtextbox,flowdocument,C#,Wpf,Richtextbox,Flowdocument,我有一个RichTextBox和一些按钮(TEMPLET1、TEMPLET2、TEMPLET3…)。当第一次单击按钮时,向RichTextBox的FlowDocument添加两段文本时,下面是应用程序的屏幕截图。 我的问题是,当我第二次单击相应的模板按钮时,如何从RichTextBox中删除特定模板。欢迎任何想法。如果有人能提供这方面的示例代码,那就太好了。提前谢谢。我不清楚您的删除部分。您想在屏幕上隐藏它还是一起删除标签 我有一个简单的解决方案,如果你只是想在屏幕上隐藏它 编辑 更改了答案,因

我有一个
RichTextBox
和一些
按钮(TEMPLET1、TEMPLET2、TEMPLET3…)
。当第一次单击按钮时,向
RichTextBox
FlowDocument
添加两段文本时,下面是应用程序的屏幕截图。



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

欢迎任何想法。如果有人能提供这方面的示例代码,那就太好了。

提前谢谢。

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

我有一个简单的解决方案,如果你只是想在屏幕上隐藏它

编辑 更改了答案,因为您已向我提供了详细信息

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>
我只是简单地切换
RichTextBox
可见性


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

试试这个网站。。如名称所示,RichTextBox只允许内部文本。虽然在你的形象中看起来很奇怪。尝试添加列表框,每当单击按钮时,添加“X”,当按下X时,您确定其编号并删除相应的行。@Maximus能否请您提供一个示例代码,因为我是wpf的新手。那将是一个很大的帮助。谢谢。删除3行文本,如果你调整窗口大小,并且每个条目只占用2行,这也适用吗?@PawBaltzersen很抱歉误导,实际上添加了2个段落,我想单击按钮删除它们。请再次检查我的问题我已经编辑了它。我想从
RichTextBox
FlowDocument
中删除(删除)1个完整的模板。例如,如果我单击
按钮(模板4)
,则会在
RichTextBox
中添加两个段落。当我再次单击
按钮(模板4)
时,添加的2个段落应被删除(完全删除)。我只使用了1个
RichTextBox
,添加到其中的模板是
段落
。代码有点重复,但我相信您可以优化解决方案。
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;
            }
        }

    }
}