2014-09-18 5 views
1

나는 RichTextBox이고 어떤 것은 Buttons(TEMPLET1,TEMPLET2,TEMPLET3....)입니다. 단추를 처음 클릭 할 때 RichTextBoxFlowDocument에 2 단락의 텍스트가 추가됩니다.

아래는 응용 프로그램의 스크린 샷입니다.

enter image description here

제 질문은, 해당 템플릿 버튼을 두 번째 클릭하면 RichTextBox에서 특정 템플릿을 어떻게 삭제할 수 있습니까?

모든 아이디어를 환영합니다. 누군가가 이것에 대한 샘플 코드를 제공 할 수 있다면 좋을 것입니다.

미리 감사드립니다.버튼 클릭시 RichTextBox에서 단락 지우기

+0

이 사이트를 방문하십시오. http://msdn.microsoft.com/en-us/library/ms752094.aspx – MethodMan

+0

이름으로 RichTextBox는, 안에있는 텍스트 만 허용합니다. 그것은 당신의 이미지에서 이상하게 보일지라도. 목록 상자를 추가하려고하면 단추를 클릭 할 때마다 "X"가 추가됩니다. X를 누르면 해당 번호가 결정되고 해당 줄이 삭제됩니다. – Maximus

+0

@ Maximus 나는 wpf를 처음 사용하면서 샘플 코드를 제공해 줄 수 있습니까? 그것은 큰 도움이 될 것입니다. 감사. –

답변

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; 
      } 
     } 

    } 
} 

나는 단순히 RichTextBoxVisibility을 전환하고있다.

추가 된 템플릿을 삭제할 수 있도록 코드를 수정했습니다. 이게 도움이 되길 바란다.

+0

'RichTextBox'의'FlowDocument'에서 1 개의 전체 템플릿을 삭제 (제거)하고 싶습니다. 예를 들어'Button (TEMPLET4)'를 클릭하면 2 단락이'RichTextBox'에 추가됩니다. 'Button (TEMPLET4)'를 다시 클릭하면 2 단락이 삭제 (완전히 제거됨)되어야합니다. 나는 단 하나의'RichTextBox' 만 사용하고있다. 추가 된 템플릿은'Paragraphs'이다. –

+0

코드는 거의 반복되지 않지만 솔루션을 최적화 할 수 있다고 확신합니다. – Sandesh