일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 웹개발
- Spring 웹개발
- 구체화하기
- ESP32
- SpringBoot
- 삼성의료원부지
- 아두이노라이브러리
- 청년원가주택
- 대방동군부지
- 아두이노 개발
- C-V2X
- ESP-DL
- java programming
- wave
- C#
- 공릉아파트부지
- Spring 웹
- Ai
- WPF
- 리츠주택
- spring
- 아두이노
- onnxruntime
- V2X
- 50만호공급
- ObjectNode
- C-ITS
- DataBinding
- ListView
- http
- Today
- Total
John's 개발자의 관심노트
C# wpf, RichTextBox 사용방법! + 글자별 색상을 다르게 하는 방법! 본문
RichTextBox 는 FlowDocument 를 입력으로받고, FlowDocument 내에는 Paragraph Type 의 Text 글자를 입력 받습니다. 다시 말하자면, 다양한 특징을 가진 Text Paragraph 들은 FlowDocument 로 병합이 되고, 이를 RichTextBox Control 을 통해 View 로 보여집니다.
1. RichTextBox 만들기 (XAML 코드 작성)
여기서는 "RichTextBox" 와 "Button" 하나를 만들어, 테스트해보는 예제를 작성할 예정이구요, Button Event 를 등록해서 RichTextBox에 여러 속성값을 가진 개개의 Text Block 을 표현되도록 구현해보겠습니다.
먼저 RichTextBox 를 만드는 경우에는, 내부에 FlowDocument 도 같이 만들어 주어야하고, 각각 "x:Name" 을 활용해서 이름을 부여해 주어야 합니다.
<Grid x:Name="MainPanel">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Content="Message 추가" Click="Button_Click"/>
<RichTextBox x:Name="RichTxtbox" Grid.Row="1" Background="Black" VerticalScrollBarVisibility="Auto" IsReadOnly="True">
<FlowDocument x:Name="FlowDoc1" FontSize="10" PageHeight="{Binding ElementName=RichTxtbox, Path=ActualHeight}">
</FlowDocument>
</RichTextBox>
</Grid>
2. FlowDocument 등록
이제 C# Code에서 Event 처리를 통해 FlowDocument 에 값을 등록하는 코드를 작성하도록 하겠습니다. "Paragraph" 변수를 통해, Text 내용과 FontSize, Color, Margin 등 다양한 속성값을 변경해서 Flow Document 에 등록할 수 있습니다. 그 외에도 다양한 속성값을 변경할 수 있으니 다양한 아이디어로 디자인 해보시기 바랍니다.
추가적으로 System Resource 낭비를 막기위해 FlowDocument 의 Block 수를 제한하는 코드를 넣어보도록 하겠습니다.
private void Button_Click(object sender, RoutedEventArgs e)
{
Paragraph pa = new Paragraph(new Run("Text 추가!!"));
// Font Size 변경
pa.FontSize = fsize ++;
// Font Color 변경
pa.Foreground = new SolidColorBrush(Color.FromArgb(0xff, 0xff, 0xff, 0xff));
// Control Margin 변경
pa.Margin = new Thickness(0);
// Block 추가.
FlowDoc1.Blocks.Add(pa);
// Paragraph 갯수가 5개를 넘어가면, 가장 첫 번째 Block 을 삭제하도록 합니다.
if(FlowDoc1.Blocks.Count > 5)
{
FlowDoc1.Blocks.Remove(FlowDoc1.Blocks.FirstBlock);
}
}
3. 결과
모든 코드가 정상적으로 작성되고 동작이 된다면 아래와 같은 결과를 보실 수 있습니다.
'코드모음 > C#' 카테고리의 다른 글
C# wpf DataBinding, Element Data Binding 하는 방법 (0) | 2023.08.09 |
---|---|
C# HTTP Get Method 사용방법 (0) | 2023.08.09 |
C# Wpf ListView 행별 색상 표현방법, Style.Triggers 사용법 (0) | 2023.08.09 |
C# wpf DataBinding, ListView DataBinding Code 정리 (0) | 2023.08.09 |
C# RTMPose Model 사용방법 정리, AI Model 실행 방법! (0) | 2023.08.08 |