2013-06-18 2 views
2

저는이 솔루션을 잠시 동안 검색 했으므로 여기에 게시하겠습니다.WPF RichTextBox는 글꼴 색상을 인라인으로 바꿉니다.

yourRichTextBox.Foreground = Brushes.Red; 

나는 또한 사용자가 커서를 선택한 텍스트의 색상 변경 수 있어요 :

는 지금은 전체 RichTextBox의 전경 색상을 변경할 수 있어요

if(!yourRichTextBox.Selection.IsEmpty){ 
    yourRichTextBox.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red); 
} 

하지만 사용자가 입력하는 다음 텍스트의 색을 변경할 수 있기를 원합니다.

나는 사용자가 텍스트를 입력하고자하는 색상을 반환하는 색상 선택기 상자가 있습니다. 따라서 사용자가 보통 검은 글꼴로 RichTextBox을 입력하면 색상 선택기 단추를 클릭하고 색상을 선택하고 확인을 클릭하면 입력 한 다음 색상이 해당 색상으로 표시됩니다. 이것을 할 수있는 방법이 있습니까 아니면 운이 좋습니까?

내가 할 수있는 유일한 방법은 사용자가 입력 한 각 문자를 캡처하는 버퍼를 가진 다음 입력 된 각 문자에 전경 속성을 설정 한 다음 RichTextBox 아이디어에 다시 추가하는 것입니다.

+0

여기에있는 해결책은 작동하지 않을 것이라고 생각합니다 (테스트하지 않았습니다) : http://stackoverflow.com/questions/1926264/color-different-parts-of-a-richtextbox-string?answertab=active#tab -top AppendText 함수가 오버로드되어 있고 추가 Color 속성을 사용하여 호출 할 수 있습니다. –

답변

1

선택 항목과 동일한 코드가 나와 함께 작동합니다.

<RichTextBox x:Name="yourRichTextBox" TextChanged="yourRichTextBox_TextChanged_1"> 
     <FlowDocument> 
      <Paragraph> 
       <Run Text="fdsfdfsda"/> 
      </Paragraph> 
      <Paragraph> 
       <Run/> 
      </Paragraph> 
     </FlowDocument> 
    </RichTextBox> 

코드 뒤에 : 예를 들어 입력을 시작하면

private void yourRichTextBox_TextChanged_1(object sender, TextChangedEventArgs e) 
    { 
     yourRichTextBox.Selection.ApplyPropertyValue(RichTextBox.ForegroundProperty, Brushes.Red); 
    } 

, 두 번째 문자 및 이후 (첫 번째 트리거이 변경) 빨간색으로 표시됩니다.

+0

두 번째 문자를 알아 내야 할 것입니다. 그러나 이것은 내가 찾고 있던 것입니다. 나는' TextChanged' 이벤트입니다. 감사! – ToastyMallows

+0

TextChanged 대신 PreviewKeyDown입니다. –

관련 문제