VB.NET 2005 - Trabalhando com RichTextBox


Há algum tempo atrás, no artigo : Criando um editor de textos no VB .NET,  eu mostrei como criar um editor de textos no VB.NET que usava o controle RichTextBox.

Nota: Para saber mais veja também o artigo VB.NET - Criando um editor de textos com verificador ortográfico

Estou voltando ao tema para mostrar como podemos criar um simples editor de textos usando o componente RichTextBox no Visual Basic 2005 Express.

Neste artigo vou usar a classe  do colega  © Rostislav V. Konnov  para usar em um exemplo que mostra como trabalhar com o controle RichTextBox com alguns recursos estendidos.

Que tal criar um editor para código Visual Basic, e usando os recursos do RichTextBox, criar um esquema de cores de fontes e texto permitindo assim a configuração pelo usuário ?

Parece complicado , não é mesmo ??? mas não é ... Pois no VB 2005 coisas complicadas podem ser facilmente resolvidas...

O componente RichTextBox é similar com o controle TextBox mas fornece características mais avançadas que podemos explorar. Dentre elas temos a formatação de texto, cores e fontes. Da mesma forma que o controle TextBox o controle RichTextBox é baseado na classe TextBoxBase a qual é baseada na classe Control.

Ao acessar textos no controle RichTextBox temos duas opções:

  1. text - Trata o texto no formato normal
  2. rtf - Trata o texto no formato Rich Text Format

Além disto o controle RichTextBox fornece métodos para abrir e salvar arquivos e procurar strings:

 - LoadFile - permite carregar um arquivo .RTF existente ou um arquivo Texto no controle. Você pode também carregar dados de um stream de dados já aberto.

- SaveFile - permite salvar para RTF ou ASCII texto. Você também pode salvar para um stream de dados aberto.

- Find -  permite localizar strings específicas no texto do controle

Você também pode inicialiar o controle para dados armazenados em memória.  Se o texto no interior do controle contiver links para sítios web , você pode usar a propriedade DetectUrls para exibir o link apropriadamente no texto; pode também tratar o evento LinkClicked para realizar tarefas associada com o link.

A propriedade SelectionProtected permite proteger o texto no controle de manipulações por parte do usuário. Com o texto protegido você pode gerenciar o evento Protected para determinar quando o usuário tentou modificar o texto ou alertar o usuário que o texto esta protegido.

Abra o Visual Basic 2005 Express Editon e crie um novo projeto do tipo WIndows Application  usando a linguagem Visual Basic com o nome de RichtextBoxDemo

Altere o nome do formulário para frmMain.vb e a seguir inclua um controle RichTextBox e 5 botões de comando no formulário conforme leiaute abaixo:

A seguir no menu Project inclua um novo formulário Windows Forms no projeto com o nome de frmschema.vb e inclua neste formulário componentes Label, Button, ChekBox e ListBox conforme o leiaute abaixo.

Este formulário permitirá a configuração pelo usuários das cores e fontes usadas no texto do controle RichTextBox.

No formulário do projeto vamos incluir a seguinte linha de código:

Private m_ColorRTB As ColorRichTextBox.clsColorRichTextBox

Ela define uma variável do tipo da classe clsColorRichTextBox definida no namespace ColorRichtextBox. Essa é a classe que eu disse que estaria usando no projeto.

No evento Click do botão de comando Carrega Arquivo do formulário frmMain vamos incluir o código que irá carregar o arquivo :

Private Sub cmdLoadFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLoadFile.Click


Dim
ofd As New OpenFileDialog()


ofd.InitialDirectory = IO.Directory.GetCurrentDirectory

ofd.Filter = "Arqs. VB.NET (*.vb)|*.vb"


If ofd.ShowDialog = DialogResult.OK Then


    Dim
sr As New IO.StreamReader(ofd.FileName)


    m_ColorRTB.ColorCode =
False


    rtbMain.Text = sr.ReadToEnd


    m_ColorRTB.ColorCode =
True


    Dim StartTime As Long = Now.Ticks
 

    m_ColorRTB.RecolorEntireText()

  
    Dim
ts As New TimeSpan(Now.Ticks - StartTime)

 

     lblTime.Text = "Carrega Arquivo: " & ts.TotalMilliseconds / 1000 & " segs."

     sr.Close()

End If

End Sub

No início definimos um objeto do tipo OpenFileDialog() que irá abrir a caixa de diálogo Abrir Arquivo permitindo ao usuário selecionar um arquivo para ser carregado.

Definimos como diretório inicial de abertura a pasta da nossa aplicação e usamos como filtro a exibição de arquivos do tipo Visual Basic com extensão .vb.

Na seqüência, apos o arquivo ter sido escolhido, abrimos um streamreader para ler o arquivo e aplicamos as propriedades definida no esquema pela classe clsColorRichTextBox

Note que estamos exibindo o tempo gasto durante o processo da seguinte forma:

1- primeiro marcamos o momento de início do processo:    Dim StartTime As Long = Now.Ticks

2- Após o encerramento marcamos o tempo gasto e descontamos o tempo inicial:   Dim ts As New TimeSpan(Now.Ticks - StartTime)

3- Exibimos o resultado em segundos :  ts.TotalMilliseconds / 1000 & " segs."

No final do processo fechamos o streamreader usado:  sr.Close()

O restando do código trata de tarefas rotineiras de definição do esquema e de sua aplicação e eu não vou dar detalhes do código para não entediar...

A seguir temos a aplicação em execução exibindo um arquivo do projeto :

Pegue o projeto completo aqui: richTextBoxDemo.zip

Até o próximo artigo  ...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti