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; } } }