Aula 70 – RichTextBox, ToolStrip, FontDialog e ColorDialog
Está aula faz parte do meu curso completo Visual Basic .net Beginners 2.0. Onde demonstro no módulo 7 como trabalhar com o controle RichTextBox.
Mas para trabalhar com este controle vamos criar um editor de texto utilizando os controles já demonstrado nas aulas anteriores.
Veja a aula completa abaixo em passo a passo:
Vamos começar o desenvolvimento criando um novo projeto do tipo Windows Forms App (.NET Framework) de nome RichTextBox.
Agora vamos adicionar os seguintes controles no formulário:
- ToolStrip – Name: tosPrincipal
- ColorDialog – Name: cldColor
- FontDialog – Name: ftdFonte
- OpenFileDialog – Name: ofdAbrirDocumento
- SaveFileDialog – Name: sfdSalvarDocumento
- RichTextBox – Name: rtbTexto
Os ícones da ToolStrip foram retirados do site IconFinder.
Antes de criar os botões da barra de ferramentas, vamos definir as variáveis de controle que vai determinar se o documento foi aberto ou salvo.
Imports System.Windows.Forms.Clipboard Public Class frmEditor 'Declarações Boolean Private blnSalvar As Boolean = False Private blnAbertoSalvo = False ' 'Declaração String Private strCaminho As String End Class
O próximo passo será a criação dos botões da barra de ferramenta como mostrado na imagem acima.
Para criar os botões seleciona a ToolStrip, clique na seta para baixo e selecione o tipo Button.
Botão Novo Documento será configurado da seguinte forma:
Private Sub tsbNovoDocumento_Click(sender As Object, e As EventArgs) Handles tsbNovoDocumento.Click 'Criando um novo documento If blnSalvar = True Then Dim result = MessageBox.Show("Você deseja salvar o documento atual?", "Atenção", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button3) Select Case result Case DialogResult.Yes 'Salvar documento tsbSalvarDocumento_Click(Nothing, Nothing) rtbTexto.ResetText() rtbTexto.Clear() blnAbertoSalvo = False blnSalvar = False tsbSalvarDocumento.Enabled = False tsbDesfazer.Enabled = False tsbRefazer.Enabled = False Case DialogResult.No 'Resetar o controle RichTextBox rtbTexto.ResetText() rtbTexto.Clear() blnAbertoSalvo = False blnSalvar = False tsbSalvarDocumento.Enabled = False tsbDesfazer.Enabled = False tsbRefazer.Enabled = False End Select Else 'Resetar o controle RichTextBox rtbTexto.ResetText() rtbTexto.Clear() blnAbertoSalvo = False blnSalvar = False tsbSalvarDocumento.Enabled = False tsbDesfazer.Enabled = False tsbRefazer.Enabled = False End If End Sub
Botão Abrir Documento será configurado da seguinte forma:
Private Sub tsbAbrirDocumento_Click(sender As Object, e As EventArgs) Handles tsbAbrirDocumento.Click 'Abrir documento existente ofdAbrirDocumento.Title = "Abrir Documento" ofdAbrirDocumento.Filter = "Documento rft|*.rft" ofdAbrirDocumento.FileName = "" If ofdAbrirDocumento.ShowDialog(Me) = DialogResult.OK Then rtbTexto.LoadFile(ofdAbrirDocumento.FileName) strCaminho = ofdAbrirDocumento.FileName blnAbertoSalvo = True End If End Sub
Botão Salvar Documento será configurado da seguinte forma:
Private Sub tsbSalvarDocumento_Click(sender As Object, e As EventArgs) Handles tsbSalvarDocumento.Click 'Salvar documento If blnSalvar = True Then If blnAbertoSalvo = False Then sfdSalvarDocumento.Title = "Salvar Documento" sfdSalvarDocumento.Filter = "Documento rft|*.rft" sfdSalvarDocumento.FileName = "" If sfdSalvarDocumento.ShowDialog(Me) = DialogResult.OK Then rtbTexto.SaveFile(sfdSalvarDocumento.FileName) strCaminho = sfdSalvarDocumento.FileName blnAbertoSalvo = True End If Else rtbTexto.SaveFile(strCaminho) End If End If End Sub
Botão Copiar será configurado da seguinte forma:
Private Sub tsbCopiar_Click(sender As Object, e As EventArgs) Handles tsbCopiar.Click rtbTexto.Copy() End Sub
Botão Recortar será configurado da seguinte forma:
Private Sub tsbRecortar_Click(sender As Object, e As EventArgs) Handles tsbRecortar.Click rtbTexto.Cut() End Sub
Botão Colar será configurado da seguinte forma:
Private Sub tsbColar_Click(sender As Object, e As EventArgs) Handles tsbColar.Click If Clipboard.ContainsText Then rtbTexto.Paste() End If End Sub
Botão Desfazer será configurado da seguinte forma:
Private Sub tsbDesfazer_Click(sender As Object, e As EventArgs) Handles tsbDesfazer.Click rtbTexto.Undo() tsbRefazer.Enabled = True End Sub
Botão Refazer será configurado da seguinte forma:
Private Sub tsbRefazer_Click(sender As Object, e As EventArgs) Handles tsbRefazer.Click rtbTexto.Redo() End Sub
Botão fonte será configurado da seguinte forma:
Private Sub tsbFonte_Click(sender As Object, e As EventArgs) Handles tsbFonte.Click If ftdFonte.ShowDialog(Me) = DialogResult.OK Then rtbTexto.SelectionFont = ftdFonte.Font End If End Sub
Botão Cor da Fonte será configurado da seguinte forma:
Private Sub tsbCorFonte_Click(sender As Object, e As EventArgs) Handles tsbCorFonte.Click If cldCor.ShowDialog(Me) = DialogResult.OK Then rtbTexto.SelectionColor = cldCor.Color End If End Sub
Botão Negrito será configurado da seguinte forma:
Private Sub tsbNegrito_Click(sender As Object, e As EventArgs) Handles tsbNegrito.Click rtbTexto.SelectionFont = New Font(rtbTexto.SelectionFont, FontStyle.Bold) End Sub
Botão Itálico será configurado da seguinte forma:
Private Sub tsbItalico_Click(sender As Object, e As EventArgs) Handles tsbItalico.Click rtbTexto.SelectionFont = New Font(rtbTexto.SelectionFont, FontStyle.Italic) End Sub
Botão Riscado será configurado da seguinte forma:
Botão Sublinhado será configurado da seguinte forma:
Private Sub tsbSublinhado_Click(sender As Object, e As EventArgs) Handles tsbSublinhado.Click rtbTexto.SelectionFont = New Font(rtbTexto.SelectionFont, FontStyle.Underline) End Sub
Botão Alinha à Esquerda será configurado da seguinte forma:
Private Sub tsbAlinharEsquerda_Click(sender As Object, e As EventArgs) Handles tsbAlinharEsquerda.Click rtbTexto.SelectionAlignment = HorizontalAlignment.Left End Sub
Botão Alinhar no Centro será configurado da seguinte forma:
Private Sub tsbAlinharCentro_Click(sender As Object, e As EventArgs) Handles tsbAlinharCentro.Click rtbTexto.SelectionAlignment = HorizontalAlignment.Center End Sub
Botão Alinha à Direita será configurado da seguinte forma:
Private Sub tsbAlinharDireita_Click(sender As Object, e As EventArgs) Handles tsbAlinharDireita.Click rtbTexto.SelectionAlignment = HorizontalAlignment.Right End Sub
Agora que já foi programado todos os botões da barra de ferramentas, vamos programar alguns eventos do controle RichTextBox para controla a ativação dos botões de salvar, copiar, recortar.
Private Sub rtbTexto_TextChanged(sender As Object, e As EventArgs) Handles rtbTexto.TextChanged tsbSalvarDocumento.Enabled = True tsbDesfazer.Enabled = True blnSalvar = True End Sub Private Sub rtbTexto_SelectionChanged(sender As Object, e As EventArgs) Handles rtbTexto.SelectionChanged If rtbTexto.SelectedText.Count > 0 Then tsbCopiar.Enabled = True tsbRecortar.Enabled = True Else tsbCopiar.Enabled = False tsbRecortar.Enabled = False End If End Sub
E por fim vamos programar o evento Ativated do formulário para controlar a ativação do botão de colar.
Private Sub frmEditor_Activated(sender As Object, e As EventArgs) Handles Me.Activated If Clipboard.ContainsText Then tsbColar.Enabled = True End If End Sub