我有一个RichTextBox
和一些Buttons(TEMPLET1,TEMPLET2,TEMPLET3....)
。单击按钮时,第一次将{2}段文本添加到FlowDocument
的{{1}}。
以下是该应用程序的屏幕截图。
/>
我的问题是,当我第二次点击相应的模板按钮时,如何从RichTextBox
删除特定模板。
欢迎任何想法。如果有人可以提供示例代码,那就太棒了。
提前谢谢。
答案 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}}。
我修改了代码,以便您现在可以删除添加的模板。我希望这会有所帮助。