2014-09-18 4 views
1

У меня есть RichTextBox и некоторые Buttons(TEMPLET1,TEMPLET2,TEMPLET3....). При нажатии кнопки 1 раз 2 абзаца текста добавляется к FlowDocument из RichTextBox.

Ниже приведен скриншот приложения.

enter image description here

Мой вопрос: как я могу удалить конкретный шаблон с RichTextBox, когда я нажму кнопку соответствующего шаблона 2 раза.

Любые идеи приветствуются. Было бы здорово, если бы кто-то мог дать пример кода.

Заранее спасибо.Удаление абзацев в RichTextBox при нажатии кнопки

+0

попробуйте этот сайт .. http://msdn.microsoft.com/en-us/library/ms752094.aspx – MethodMan

+0

RichTextBox как имя указывает, допускает только текст внутри. Хотя это выглядит странно на вашем изображении. Попробуйте добавить список, всякий раз, когда нажимается кнопка «X», при нажатии X вы определяете ее номер и удаляете соответствующую строку. – Maximus

+0

@Maximus не могли бы вы дать пример кода, поскольку я новичок в wpf. Это будет большой помощью. Благодарю. –

ответ

1

Непонятно с вашим Удалить часть. Вы хотите просто скрыть это от экрана или удалить тег все вместе?

У меня есть одно простое решение, если вы просто хотите скрыть его с экрана.

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.

Я изменил код, чтобы теперь вы могли удалить добавленные шаблоны. Надеюсь, это поможет.

+0

Я хочу удалить (удалить) 1 цельный шаблон из 'FlowDocument'' RichTextBox'. Например, если я нажму кнопку «Button (TEMPLET4)», то в «RichTextBox» добавятся 2 абзаца. Когда я снова нажимаю кнопку «Button (TEMPLET4)», тогда добавляется 2 абзаца, которые необходимо удалить (полностью удалены). Я использую только 1 RichTextBox, а добавляемые к нему шаблоны - 'Paragraphs'. –

+0

Код немного повторяющийся, но я уверен, что вы можете оптимизировать решение. – Sandesh