Por default no Visual Studio um projeto visual já cria o primeiro formulário para o desenvolvedor como já vimos no post anterior, e é muito mais fácil desenvolver usando os componentes em Design Time, mas como em Java o C# também pode ser manipulado usando somente código fonte e este tipo de codificação chama-se: código dinâmico. Dependo do tipo de software que você esta desenvolvendo códigos dinâmicos são um recurso extremamente útil.
Desenvolvedores puristas preferem escrever códigos dinamicamente, estes deixam o código mais limpo e mais leve e as vezes até mais rápido do que IDEs de Design Time, que criam um arquivo extra para gerenciar os componentes e suas posições na tela.
Controles Básicos
Para criar programas em C# você precisa conhecer os controles básicos, programadores iniciantes sabem usar as propriedades de objetos como por exemplo, a classe Size (tamanho) usando o inspetor de objetos, mas na hora de criar controles de tamanho e posições de tela dinamicamente se embaralham um pouco, pois não se pode atribuir os valores diretamente como se faz no inspetor de objetos, é necessário o uso de classes para fazer este trabalho.
Point
Representa um par ordenado de inteiros X e Y de coordenadas que define um ponto em um plano bidimensional.
Size
Armazena um par ordenado de números inteiros, que especificam a altura e largura.
Form
Representa uma janela ou caixa de diálogo que compõe a interface de usuário do aplicativo
Label
Representa o rótulo de texto para um controle e fornece suporte para teclas de acesso.
TextBox
Representa um controle de caixa de texto do Windows.
Button
Representa um controle de botão do Windows.
EventHandler
Representa o método que manipulará um evento que não tem dados do evento. O modelo de evento no .NET Framework. Baseia-se em ter um representante do evento que conecta um evento com seu manipulador.
Exemplo:
Neste exemplo criamos dinamicamente os controles básicos e um evento para um programa que concatena duas strings.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DesenvolvimentoAberto
{
public partial class Form1 : Form
{
// Cria Componentes
Label rotulo = new Label();
TextBox texto1 = new TextBox();
TextBox texto2 = new TextBox();
Button botao = new Button();
Label resultado = new Label();
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
// Altera titulo do formulario
Form1.ActiveForm.Text = "Desenvolvimento Aberto";
// Seta valores para as propriedades dos objetos
rotulo.Text = "Concatena Strings:";
rotulo.Location = new Point(5, 5);
texto1.Text = "Digite uma String";
texto1.Location = new Point(5, 30);
texto1.Size = new Size(200, 20);
texto2.Text = "Digite uma String";
texto2.Location = new Point(5, 60);
texto2.Size = new Size(200, 20);
botao.Text = "Somar";
botao.Location = new Point(5, 85);
// Delega evento OnClick para o botão
botao.Click += new System.EventHandler(botao_Click);
resultado.Text = "Resultado:";
resultado.Location = new Point(5, 110);
resultado.Size = new Size(300, 20);
// Adiciona objetos no formulário
Form1.ActiveForm.Controls.Add(rotulo);
Form1.ActiveForm.Controls.Add(texto1);
Form1.ActiveForm.Controls.Add(texto2);
Form1.ActiveForm.Controls.Add(botao);
Form1.ActiveForm.Controls.Add(resultado);
}
// Método OnClick do botão
private void botao_Click(object sender, EventArgs e)
{
resultado.Text = texto1.Text + texto2.Text;
}
}
}

