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