У меня есть RichTextBox
и некоторые Buttons(TEMPLET1,TEMPLET2,TEMPLET3....)
. При нажатии кнопки 1 раз 2 абзаца текста добавляется к FlowDocument
из RichTextBox
.
Ниже приведен скриншот приложения.
Мой вопрос: как я могу удалить конкретный шаблон с RichTextBox
, когда я нажму кнопку соответствующего шаблона 2 раза.
Любые идеи приветствуются. Было бы здорово, если бы кто-то мог дать пример кода.
Заранее спасибо.Удаление абзацев в RichTextBox при нажатии кнопки
ответ
Непонятно с вашим Удалить часть. Вы хотите просто скрыть это от экрана или удалить тег все вместе?
У меня есть одно простое решение, если вы просто хотите скрыть его с экрана.
EDIT Изменен ответ, поскольку вы предоставили мне подробную информацию.
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
в RichTextBox
.
Я изменил код, чтобы теперь вы могли удалить добавленные шаблоны. Надеюсь, это поможет.
Я хочу удалить (удалить) 1 цельный шаблон из 'FlowDocument'' RichTextBox'. Например, если я нажму кнопку «Button (TEMPLET4)», то в «RichTextBox» добавятся 2 абзаца. Когда я снова нажимаю кнопку «Button (TEMPLET4)», тогда добавляется 2 абзаца, которые необходимо удалить (полностью удалены). Я использую только 1 RichTextBox, а добавляемые к нему шаблоны - 'Paragraphs'. –
Код немного повторяющийся, но я уверен, что вы можете оптимизировать решение. – Sandesh
попробуйте этот сайт .. http://msdn.microsoft.com/en-us/library/ms752094.aspx – MethodMan
RichTextBox как имя указывает, допускает только текст внутри. Хотя это выглядит странно на вашем изображении. Попробуйте добавить список, всякий раз, когда нажимается кнопка «X», при нажатии X вы определяете ее номер и удаляете соответствующую строку. – Maximus
@Maximus не могли бы вы дать пример кода, поскольку я новичок в wpf. Это будет большой помощью. Благодарю. –