Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] WPF - Usando o controle RichTextBox

Recommended Posts

Se você nunca ouviu falar no controle RichTextBox, leia este artigo.

 

O RichTextBox é um controle sofisticado e altamente funcionalconcebido para permitir a visualização e para editar objetos FlowDocument.A combinação do RichTextBox e de objetos FlowDocument forneceao usuário o acesso a recursos avançados de edição dedocumentos que não existem em um controle TextBox. Esses recursosincluem a formatação de texto misto, hifenização,tabelas, listas, parágrafos e imagens embutidas.

 

Parapreencher o conteúdo de um RichTextBox estaticamente, vocêinclui um elemento FlowDocument como o conteúdoda declaração XAML RichTextBox. Dentro do elemento FlowDocument, você pode definir conteúdo formatado usandoelementos do modelo de conteúdo de fluxo de documentos. Os principais elementos estruturais da presentes no modelo deconteúdo incluem a Figure, Hyperlink,List, ListItem,Paragraph, Section e Table.

 

Parapreencher o RichTextBox no código, você deve trabalhar com umobjeto FlowDocument diretamente. Você pode ou criar um novoobjeto FlowDocument ou obter um já existente um RichTextBoxatravés da propriedade RichTextBox.Document.

 

Vocêmanipula o conteúdo do FlowDocument selecionando partes do seuconteúdo usando um objeto System.Windows.Documents.TextSelection. O objeto TextSelectioncontém duas propriedades, Start e End, queidentificam as posições inicial e final do conteúdoFlowDocument que você quer manipular. Uma vez que você tenha umobjeto TextSelection adequado, você pode manipular seu conteúdocom o os membros TextSelection.

 

Parasimplificar a manipulação de objetos FlowDocument, oRichTextBox suporta comandos padrão definidos pelas classes ApplicationCommandse EditingCommands a partir do System.Windows.Input.

 

O RichTextBox também suporta padrão combinações de teclaspara executar operações básicas de formatação de texto, taiscomo negrito, itálico, sublinhado e formatos de texto,bem como cortar, copiar e colar o conteúdo selecionado.

 

No exemplo a seguir, temos um RichTextBox usadopara editar um FlowDocument, onde o XAML defineum FlowDocument estático que contém uma variedade de elementosestruturais e de formatação. A interface com o usuário forneceum conjunto de botões para manipular o conteúdo de RichTextBox.

 

Os botões são usados na aplicação para dar suporte aosrecursos de edição do RichTextBox e também para usar estilosaplicados a partir dos mesmos diretamente no controle.

 

Abra o Visual C# 2010 Express Edition e crie uma nova aplicação do tipo WPFApplication com o nome EditorWPF2.

 

33022.gif

 

Em seguida, vamos definir ainterface do usuário usando o controle RichTextBoxcom algum texto estático e botões de comando conforme leiauteabaixo:

 

33024.gif

 

O código XAML usado paragerar a interface é dado a seguir:

 

<Window x:Class="Editor_WPF2.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="MainWindow" Height="350" Width="525">

<Grid>

<DockPanel>

<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">

<StackPanel.Resources>

<Style TargetType="{x:Type Button}">

<Setter Property="CommandTarget"

Value="{Binding ElementName=rtbTextBox1}" />

</Style>

</StackPanel.Resources>

<Button Content="Clear" Name="btnClear" Click="btnClear_Click" />

<Separator Margin="5"/>

<Button Content="Cu_t" Command="ApplicationCommands.Cut" />

<Button Content="_Copy" Command="ApplicationCommands.Copy" />

<Button Content="_Paste" Command="ApplicationCommands.Paste" />

<Separator Margin="5"/>

<Button Content="_Undo" Command="ApplicationCommands.Undo" />

<Button Content="_Redo" Command="ApplicationCommands.Redo" />

<Separator Margin="5"/>

<Button Content="_Bold" Command="EditingCommands.ToggleBold" />

<Button Content="_Italic" Command="EditingCommands.ToggleItalic" />

<Button Content="Underline"

Command="EditingCommands.ToggleUnderline" />

<Separator Margin="5"/>

<Button Content="_Right" Command="EditingCommands.AlignRight" />

<Button Content="C_enter" Command="EditingCommands.AlignCenter" />

<Button Content="_Left" Command="EditingCommands.AlignLeft" />

</StackPanel>

<RichTextBox DockPanel.Dock="Bottom" Name="rtbTextBox1"

HorizontalScrollBarVisibility="Visible"

VerticalScrollBarVisibility="Visible">

<FlowDocument>

<Paragraph FontSize="12">

Lorem ipsum dolor sit amet, consectetuer adipiscing elit,

sed diam nonummy nibh euismod tincidunt ut laoreet dolore

magna aliquam erat volutpat.

</Paragraph>

<Paragraph FontSize="15">

Ut wisi enim ad minim veniam, quis nostrud exerci tation

ullamcorper suscipit lobortis nisl ut aliquip ex ea

commodo consequat. Duis autem vel eum iriure.

</Paragraph>

<Paragraph FontSize="18">Uma Lista</Paragraph>

<List>

<ListItem>

<Paragraph>

<Bold>Item - Negrito</Bold>

</Paragraph>

</ListItem>

<ListItem>

<Paragraph>

<Italic>Item - Itálico</Italic>

</Paragraph>

</ListItem>

<ListItem>

<Paragraph>

<Underline>Item - Sublinhado</Underline>

</Paragraph>

</ListItem>

</List>

</FlowDocument>

</RichTextBox>

</DockPanel>

</Grid>

</Window>Os botões de comandousados já realizam as tarefas diretamente no controleRichTextBox, vamos apenas definir o código para o evento Clickdo botão Clear no code-behind do arquivo MainWindow.xaml.csconforme abaixo:

 

private void btnClear_Click(object sender, RoutedEventArgs e)

{

// Seleciona todo o texto no FlowDocument e recorta-o

rtbTextBox1.SelectAll();

rtbTextBox1.Cut();

}Agora é só alegria...

 

Rode o projeto e divirta-secom os recursos do RichTextBox da WPF:

 

33025.gif

 

Fica a seu critérioexpandir os recursos usados no projeto.

 

Pegue o projeto completoaqui:  Editor_WPF2.zip

 

Simples , simples assim...

 

Eu sei, é apenas WPF , maseu gosto...

 

 

 

http://imasters.com.br/artigo/19630/dotnet/wpf-usando-o-controle-richtextbox/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.