C# - RicthTextBox dinâmico e exibindo imagens
Neste artigo vou mostar como podemos exibir imagens em um controle RichTextBox na linguagem C# em uma aplicação Windows Forms. |
Um controle RichTextBox é uma caixa de texto avançada que fornece edição de texto e recursos avançados de formatação, incluindo o carregamento de arquivos de formato de texto rico (RTF).
Podemos
criar um controle RichTextBox usando um designer de formulários em tempo de
design ou usando a classe RichTextBox no código em tempo de execução.
Para criar um controle RichTextBox em tempo de design, basta arrastar e soltar
um controle RichTextBox da Caixa de ferramentas em um Formulário no Visual
Studio. Uma vez que um RichTextBox for adicionado no Formulário, você pode
movê-lo e redimensioná-lo usando o mouse e definir suas propriedades e eventos
na caixa de propriedades.
Criar um controle RichTextBox em tempo de execução é meramente um trabalho de
criação de uma instância da classe RichTextBox, definindo suas propriedades e
adicionando o objeto RichTextBox à coleção Controls do Formulário.
O primeiro passo para criar um RichTextBox dinâmico é criar uma instância da
classe RichTextBox. O trecho de código a seguir cria um objeto de controle
RichTextBox.
// Cria um objeto RichTextBox
RichTextBox rtbxd = new RichTextBox();
|
A seguir podemos definir as propriedades do controle RichTextBox.
O código abaixo define o tamanho, a localização, a cor de fundo, a cor de primeiro plano, um texto, o nome e as propriedades de fonte do objeto richTextBox criado :
//define a localização e tamanho
rtbxd.Location = new Point(100, 100);
rtbxd.Width = 400;
rtbxd.Height = 250;
//Define a cor de fundo e de primeiro plano
rtbxd.BackColor = Color.Black;
rtbxd.ForeColor = Color.White;
//define um texto , o nome a fonte do controle
rtbxd.Text = "Olá, sou um controle richtextbox dinâmico";
rtbxd.Name = "rtbxd";
rtbxd.Font = new Font("Georgia", 16);
//incluindo o controle na coleção Controls do formulário
Controls.Add(rtbxd);
|
Para que o controle seja exibido temos que incluir o controle na coleção Controls do formulário : Controls.Add(rtbxd)
Podemos também definir diversas propriedades do controle como :
O código a seguir mostrar um exemplo de definição destas propriedades:
//define propriedades do controle
rtbxd.AcceptsTab = true;
rtbxd.WordWrap = true;
rtbxd.ScrollBars = RichTextBoxScrollBars.Both;
rtbxd.ShortcutsEnabled = false;
|
Além disso podemos realizar diversas operações com este controle. As principais são :
Geralmente as operações acima são feitas sobre um texto selecionado no controle usando a propriedade SelectedText : Ex: string texto = rtbxd.SelectedText;
Lendo o conteúdo de um controle RichTextBox
Para ler o conteúdo de um controle RichTextBox basta usar a propriedade Text do controle (sem formatação).
No código abaixo estamos lendo linha por linha o conteúdo de um controle RichTextBox:
string[] rtbxLinhas = rtbxd.Lines;
foreach (string linha in rtbxLinhas)
{
MessageBox.Show(linha);
}
|
Após essa apresentação básica do controle vamos ver como criar um controle RichTextBox dinamicamente e como exibir imagens no controle RichTextBox.
Recursos Usados:
Criando um projeto Windows Forms
Abra o VS 2017 Community e crie um projeto do tipo Windows Forms com o nome RichTextBox_Picture.
No formulário do projeto inclua os seguintes controles a partir da ToolBox:
1- Código do evento Click botão Criar RichTextBox dinâmico inclua o código abaixo:
private void btnCriar_Click(object sender, EventArgs e)
{
rtbx.Visible = false;
// Cria um objeto RichTextBox
RichTextBox rtbxd = new RichTextBox();
//define a localização e tamanho
rtbxd.Location = new Point(100, 100);
rtbxd.Width = 400;
rtbxd.Height = 250;
//Define a cor de fundo e de primeiro plano
rtbxd.BackColor = Color.Black;
rtbxd.ForeColor = Color.White;
//define um texto , o nome a fonte do controle
rtbxd.Text = "Olá, sou um controle richtextbox dinâmico";
rtbxd.Name = "rtbxd";
rtbxd.Font = new Font("Georgia", 16);
//define propriedades do controle
rtbxd.AcceptsTab = true;
rtbxd.WordWrap = true;
rtbxd.ScrollBars = RichTextBoxScrollBars.Both;
rtbxd.ShortcutsEnabled = false;
//incluindo o controle na coleção Controls do formulário
Controls.Add(rtbxd);
string[] rtbxLinhas = rtbxd.Lines;
foreach (string linha in rtbxLinhas)
{
MessageBox.Show(linha);
}
}
|
2- No evento Click do botão Localizar Imagem inclua o código abaixo:
private void btnLocalizarImagem_Click(object sender, EventArgs e)
{
rtbx.Visible = true;
ofd1.Filter = "Images |*.bmp;*.jpg;*.png;*.gif;*.ico";
ofd1.Multiselect = false;
ofd1.FileName = "";
DialogResult resultado = ofd1.ShowDialog();
if (resultado == DialogResult.OK)
{
Image img = Image.FromFile(ofd1.FileName);
Clipboard.SetImage(img);
rtbx.Paste();
rtbx.Focus();
}
else
{
rtbx.Focus();
}
}
|
Executando o projeto iremos obter o seguinte resultado:
1- Criando o RichTextBox dinâmico
2- Exibindo imagens no controle
Pegue o código do projeto aqui : RichTextBox_Picture.zip
"Havendo Deus antigamente falado muitas
vezes, e de muitas maneiras, aos pais, pelos profetas, a nós falou-nos nestes
últimos dias no Filho (Jesus)"
Hebreus 1:1
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Editor de Texto com RichTextBox e PrintDocument - Macoratti.net