UNIVERSIDADE DE BELAS – UNIBELAS
FACULDADE DE ENGENHARIA
DEPARTAMENTO DE ENGENHARIA INFORMÁTICA
__________________ || ____________________
DISCIPLINA: POO-IV
DOCENTE: JOSÉ QUEIRÓS
E-mail: [Link]@[Link]
Windows Forms .NET
Criar um aplicativo Windows Forms no Visual Studio com C#
Windows Forms .NET
Criar um aplicativo Windows Forms no Visual Studio com C#
A aplicação possui somente um formulário e faz o CRUD -Inclusão,
exclusão, atualização e selecção - na tabela Contatos da base de
dados Cadastro do SQL Server.
Windows Forms .NET
script SQL para criar a tabela Contatos
USE[Cadastro]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Contatos] (
[id][int] IDENTITY(1, 1) NOT NULL,
[nome] [nchar] (100) NULL,
[endereco][nchar] (200) NULL,
[telemovel][nchar] (15) NULL,
[email][nchar] (100) NULL,
CONSTRAINT[PK_Contatos] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON[PRIMARY]
) ON[PRIMARY]
GO
Windows Forms .NET
script C# usado para criar o aplicativo
Devemos incluir no projecto uma referência ao namespace
: [Link] e [Link] para aceder
os recursos da ADO .NET.
using System;
using [Link];
using [Link];
using [Link];
Windows Forms .NET
script C# usado para criar o aplicativo
No início do formulário vamos declarar a string de conexão e
algumas variáveis objectos para ser usado no projecto:
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection("Data Source=.;Initial
Catalog=Cadastro;Integrated Security=True");
SqlCommand cmd;
SqlDataAdapter adapt;
int id = 0;
public Form1()
{
InitializeComponent();
ExibirDados();
}
Windows Forms .NET
script C# usado para criar o aplicativo
No construtor do formulário chamamos o método ExibirDados() para aceder
a tabela e exibir informações no controle DataGridView
public Form1() {
InitializeComponent();
ExibirDados();
}
Windows Forms .NET
script C# usado para criar o aplicativo
private void ExibirDados()
{
try
A seguir temos o código do {
[Link]();
método ExibirDados() que DataTable dt = new DataTable();
abre a conexão, cria um adapt = new SqlDataAdapter("SELECT * FROM
DataTable e acede todos os Contatos", con);
registros da [Link](dt);
[Link] = dt;
tabela Contatos e preenche }
o DataTable exibindo-o a catch
seguir no DatagridView: {
throw;
}
finally
{
[Link]();
}
}
Windows Forms .NET
script C# usado para criar o aplicativo
private void btn_salvar_Click_1(object sender, EventArgs e)
{
A seguir temos "")
if ([Link] != "" && [Link] != "" && [Link] != "" && [Link] !=
{
o código do try
{
botão Novo qu cmd = new SqlCommand("INSERT INTO Contatos(nome,endereco,celular,telefone,email)
VALUES(@nome,@endereco,@celular,@telefone,@email)", con);
e limpa os [Link]();
[Link]("@nome", [Link]());
campos do [Link]("@endereco", [Link]());
[Link]("@telemovel", [Link]());
formulário : [Link]("@email", [Link]());
[Link]();
[Link]("Cadastro feito com sucesso...");
}
catch (Exception ex)
{
[Link]("Erro : " + [Link]);
}
finally
{
[Link]();
ExibirDados();
// LimparDados();
}
}
else
{
Windows Forms .NET
private void btn_salvar_Click_1(object sender, EventArgs e)
{
if ([Link] != "" && [Link] != "" && [Link] != "" && [Link] != "")
{
try
{
cmd = new SqlCommand("INSERT INTO Contatos(nome,endereco,celular,telefone,email)
VALUES(@nome,@endereco,@celular,@telefone,@email)", con);
[Link]();
[Link]("@nome", [Link]());
[Link]("@endereco", [Link]());
[Link]("@telemovel", [Link]());
[Link]("@email", [Link]());
[Link]();
}
[Link]("Cadastro feito com sucesso...");
Para salvar as informações de
catch (Exception ex)
{ um novo Contato usamos o
[Link]("Erro : " + [Link]);
}
finally
código a seguir no
{
[Link]();
botão Salvar:
ExibirDados();
// LimparDados();
}
}
else
{
[Link]("Informe todos os dados requeridos");
}
}
Windows Forms .NET
A seguir temos o código do botão Novo que limpa os campos do
formulário :
private void btn_novo_Click(object sender, EventArgs e)
{
[Link] = "";
[Link] = "";
[Link] = "";
[Link] = "";
[Link]();
}
Windows Forms .NET
private void btn_actualizar_Click(object sender, EventArgs e)
{
if ([Link] != "" && [Link] != "" && [Link] != "" && [Link] != "")
{
try
{
cmd = new SqlCommand("UPDATE Contatos SET nome=@nome, endereco=@endereco, celular=@celular,telefone=@telefone,email=@email
WHERE id=@id", con);
[Link]();
[Link]("@id", id);
[Link]("@nome", [Link]());
[Link]("@endereco", [Link]());
[Link]("@telemovel", [Link]());
[Link]("@email", [Link]());
[Link]();
[Link]("Registro atualizado com sucesso...");
}
catch (Exception ex) Para atualizar registro definimos
{
[Link]("Erro : " + [Link]); uma instrução SQL - UPDATE
}
finally SET.
{
[Link]();
ExibirDados();
// LimparDados();
}
}
else
{
[Link]("Informe todos os dados requeridos");
}
}
Windows Forms .NET
private void btn_eliminar_Click(object sender, EventArgs e)
{
if (id != 0)
{
if ([Link]("Deseja Eliminar este registro ?", "Agenda", [Link], [Link]) == [Link])
{
try
{
cmd = new SqlCommand("DELETE Contatos WHERE id=@id", con);
[Link]();
[Link]("@id", id);
[Link](); O código para excluir um contato
[Link]("registro eliminado com sucesso...!");
} usa a instrução
catch (Exception ex)
{ SQL DELETE com a
}
[Link]("Erro : " + [Link]);
cláusula WHERE e o código do
finally
{ contato
[Link]();
ExibirDados();
//LimparDados();
}
}
}
else
{
[Link]("Selecione um registro para eliminar");
}
}
Windows Forms .NET
O utilizador pode seleccionar uma linha do controle DataGridView para exibir os respectivos
dados nas caixas de texto do formulário. O código que faz isso é o seguinte:
private void dgvAgenda_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
try
{
id = Convert.ToInt32([Link][[Link]].Cells[0].[Link]());
[Link] = [Link][[Link]].Cells[1].[Link]();
[Link] = [Link][[Link]].Cells[2].[Link]();
[Link] = [Link][[Link]].Cells[4].[Link]();
[Link] = [Link][[Link]].Cells[5].[Link]();
}
catch { }
}
Windows Forms .NET
Este projecto foi criado usando uma abordagem para iniciantes mas ele fere os
princípios das boas práticas de programação visto que o formulário além de
apresentar os dados também faz o acesso e a manutenção dos dados.
Em uma aplicação mais robusta recomenda-se separar o código de acesso a dados em
uma classe ou um novo projecto para separar as responsabilidades.
Fica como um desafio a criação de uma classe para aceder os dados e a remoção de
todo o código de acesso a dados e suas referências do formulário.
Windows Forms .NET
C# - Agenda de Contactos - CRUD com SQL Server