Você está na página 1de 112

Prof.

Mauro Cafe

Sistema Simples de Biblioteca


Vamos criar um sistema simples para uma Biblioteca. Nele, vamos usar as operaes bsicas de CRUD para
fazer o cadastro, excluso, atualizao e a consulta de livros, funcionrios e clientes.
Nesta parte vamos modelar o banco de dados e comear a criar as telas. Para isso, crie primeiro um
projeto.

File -> New -> Project


Em Installed Templates escolha Visual C# e depois Windows
No painel central escolha a opo Windows Forms Application
Nome do Projeto: Biblioteca
Ok

Obs.: Antes de clicar no boto Ok, defina a localizao do projeto.


Agora:

Clique no menu Data e depois em Add New Data Source


Escolha Database e Next
Escolha DataSet e Next
Clique no boto New Connection
Escolha a opo Microsoft SQl Server Database File

Clique no boto Continue


Em Database file name digite: Biblioteca

Clique no noto Ok
Clique no boto Sim para criar o banco de dados
Voltando para tela Data Source Configuration Wizard clique no boto Next
Clique no boto Sim para que o banco acompanhe o projeto
Next e Finish

Prof. Mauro Cafe


PARA CRIAR AS TABELAS FAA:

Na janela Solution Explorer d um duplo clique sobre o arquivo Biblioteca.mdf


Na janela Server Explorer d um clique com o boto direito sobre a pasta Tables e depois escolha a
opo Add New Table

Defina os campos e os tipos de dados conforme a figura a seguir:

TIPOS DE DADOS
CHAR texto de comprimento fixo

VARCHAR texto de comprimento varivel

Se tiver um CHAR(10) que armazene um valor de


apenas 3 posies, as outras 7 posies sero
preenchidas com espaos em branco. Consumindo
o mesmo espao em disco

Se tiver um VARCHAR(10) e armazenar um valor


com as mesmas 3 osies, apenas as 3 posies
sero preenchidas e, consequentemente, o espao
utilizado reduzido.

INT Nmeros do tipo Inteiro

SMALLINT Nmeros do tipo inteiro

O tipo de dados INT permite nmeros de


-2.147.483.648 2.147.483.647.
Tamanho de armazenamento - 4 bytes

O tipo de dados SMALLINT permite nmeros de


-32.768 32.767
Tamanho de armazenamento - 2 bytes

Posicione no campo Id_Livro d um clique com o boto direito e escolha Set Primary Key
Continue posicionado em ID_Livro e em Column Properties coloque (Is Identity) como yes

Salve a tabela com o nome de Livros

Prof. Mauro Cafe


CRIE UMA NOVA TABELA:

Na janela Server Explorer d um clique com o boto direito sobre a pasta Tables e depois escolha a
opo Add New Table
Defina os campos e os tipos de dados conforme a figura a seguir:

TIPOS DE DADOS DE DATA E HORA


Os tipos de dados de data e hora so apresentados na tabela a seguir.
Tipo de dados

Formato

Intervalo

Preciso

Armazenamento (bytes)

time

hh:mm:ss

00:00:00 a 23:59:59

100 nanossegundos

3a5

Date

AAAA-MM-DD

0001-01-01 a 9999-12-31

1 dia

smalldatetime

AAAA-MM-DD hh:mm:ss

1900-01-01 a 2079-06-06

1 minuto

datetime

AAAA-MM-DD hh:mm:ss

1753-01-01 a 9999-12-31

0,00333 segundo

Posicione no campo Id_Funcionario d um clique com o boto direito e Set Primary Key
Em Column Properties coloque a propriedade (Is Identity) como yes
Salve a tabela com o nome de Funcionarios

CRIE A TERCEIRA TABELA

Na janela Server Explorer d um clique com o boto direito sobre a pasta Tables e depois escolha a
opo Add New Table
Defina os campos e os tipos de dados conforme a figura a seguir:

Posicione no campo Id_Cliente d um clique com o boto direito e Set Primary Key
Em Column Properties coloque a propriedade (Is Identity) como yes
E salve a tabela com o nome de Clientes

Prof. Mauro Cafe

Poderamos criar muito mais tabelas para armazenar os autores, editoras, etc. Mas vamos nos
manter nessas trs tabelas.

Pronto, nosso modelo de dados est completo. Perceba que no usamos relacionamentos entre as
tabelas (s usamos chaves primrias), j que o objetivo aqui que cada tabela seja nica
(seguindo esta idia mais adiante criaremos formulrios nicos para estas tabelas) dando a idia
de que uma tabela seja totalmente independente da outra.

Prof. Mauro Cafe

Criando a Tela Principal

No Solution Explorer d um clique com o boto direito sobre o form1.cs e Rename.


Renomeia o arquivo form1.cs para Principal.cs e d um clique na sequencia no boto Sim

No Solution Explorer d um duplo clique sobre o Principal.cs


Em ToolBox arraste o controle ToolStrip para o formulrio principal e nele adicione 3 Buttons
Com o ToolStrip selecionado (clicado) altere a propriedade BackColor para 224; 224; 224

Em cada button clique com o boto direito e escolha Set Image para adicionar uma imagem
o No primeiro escolha a imagem Clientes.ico
o No segundo escolha a imagem Funcionario.ico
o No terceiro escolha a imagem Livros.ico

Clique com o boto direito novamente em cada button, e escolha a opo DisplayStyle e Image
and Text. Assim ir aparecer imagem e a sua direita um texto.

Obs: Aumente a largura do form para visualizar os trs buttons


Para alterar o texto e o tamanho de cada button faa:
Clique com o boto direito sobre o primeiro button do toolStrip e escolha properties.
Na Janela Properties posicione sobre a propriedade Text e escreva: Clientes
Posicione sobre a propriedade Name e escreva: btnClientes
Posicione sobre a propriedade ImageScalling e escolha None
Clique no segundo button do toolStrip.
Na Janela Properties posicione sobre a propriedade Text e escreva: Funcionrios
Posicione sobre a propriedade Name e escreva: btnFuncionarios
Posicione sobre a propriedade ImageScalling e escolha None
Clique no terceiro button do toolStrip.
Na Janela Properties posicione sobre a propriedade Text e escreva: Livros
Posicione sobre a propriedade Name e escreva: btnLivros
Posicione sobre a propriedade ImageScalling e escolha None
Neste exemplo estou usando imagens com tamanho de 4848.

DEFINIO - PROPRIEDADES

Text O Texto que ir parecer no button


Name a identificao do objeto, como se fosse um RG, ou seja, cada um tem o seu.
ImageScalling None Deixa a imagem no tamanho real.

Obs: Todas as imagens usadas neste projeto foram baixadas gratuitamente http://www.iconfinder.com/

Prof. Mauro Cafe


ADICIONE OUTRO TOOLSTRIP AO FORMULRIO PRINCIPAL

Em ToolBox arraste o controle ToolStrip para o formulrio principal


Com o ToolStrip selecionado (clicado) altere a propriedade BackColor para 224; 224; 224
Abra o ToolStrip Tasks deste ToolStrip
Em Dock escolha a opo bottom para ficar como rodap do Principal.cs

Neste ToolStrip adicione um Button


Clique com o boto direito sobre ele e escolha a opo Set Image.
Escolha a imagem Sair.ico e Ok.
Clique com o boto direito novamente e escolha a opo DisplayStyle / Image and Text.
Na Janela Properties posicione sobre a propriedade Text e escreva: Sair
Posicione sobre a propriedade Name e escreva: btnSair
Na propriedade ImageScalling escolha a opo None

DEFINIR PROPRIEDADES DO FORMULRIO PRINCIPAL

Clique com o boto direito sobre o Formulrio e escolha Properties


Na Janela de Propriedades (Properties) defina:
o MaximizeBox para False (No poder maximizar a janela)
o FormBorderStyle para FixedSingle (No poder redimensionar a janela)
o StartPosition para CenterScreen (Para a Janela surgir sem no centro da tela)
o Em Text digite Biblioteca 1.0 (Para que este nome surge na barra de ttulo do form)

Seu form dever ficar desta forma:

Prof. Mauro Cafe

Criando o Formulrio Cliente:

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add -> Windows Forms e d o nome de frmClientes.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FORM FRMCLIENTES FAA:

MaximizeBox para False


FormBorderStyle para FixedSingle
StartPosition para CenterScreen
Em Text digite Cadastro de Clientes
IsMdiContainer para True
Size para 680; 530 (680 Largura, 530 Altura)

Obs.: O valor True do IsMdiContainer permite abrir uma nova janela dentro de si.
Nos formulrios criados a partir de agora usaremos o conceito MDI, assim criaremos formulrios filhos que
sero chamados a partir dos formulrios Pais, que no nosso caso sero estes trs, Clientes, Funcionrios e
Livros.
Em nosso formulrio Clientes, recm-criado, vamos criar 4 botes que sero responsveis por chamar os
formulrios filhos de Cadastro, Atualizao/Excluso e Consulta e 1 boto para Voltar ao form principal.
COM O FORMULRIO FRMCLIENTES ABERTO FAA:

Coloque um controle ToolStrip e inclua 4 botes;

Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Alterar e Excluir e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Alterar / Excluir
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnAlterarExcluir
Posicione sobre a propriedade Modifiers e escolha a opo Public
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a adicionar clientes e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cadastrar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCadastrar
Posicione sobre a propriedade Modifiers e escolha a opo Public

Prof. Mauro Cafe


Terceiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a consultar clientes e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Consultar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnConsultar
Posicione sobre a propriedade Modifiers e escolha a opo Public
Quarto Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e escolha a opo Public
O Form Clientes dever ficar dessa forma:

ADICIONE OUTRO TOOLSTRIP NO FORM FRMCLIENTES

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom

Prof. Mauro Cafe

Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Sair e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Sair
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnSair
Posicione sobre a propriedade Modifiers e escolha a opo Public

Obs: A propriedade Modifiers para Public permite termos acesso a estes botes em outros formulrios.

Prof. Mauro Cafe

Criando o form Funcionrios:

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add -> Windows Forms e d o nome de frmFuncionarios.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FORM FRMFUNCIONARIOS FAA:

MaximizeBox para False


FormBorderStyle para FixedSingle
StartPosition para CenterScreen
Em Text digite Cadastro de Funcionrios
IsMdiContainer para True
Size para 680; 530

Em nosso formulrio Funcionrios vamos criar quatro botes que sero responsveis por chamar os
formulrios filhos de Cadastro, Atualizao/Excluso e Consulta.
COM O FORMULRIO FRMFUNCIONARIOS ABERTO FAA:

Coloque um controle ToolStrip e inclua 4 botes;

Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Alterar e Excluir e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Alterar / Excluir
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnAlterarExcluir
Posicione sobre a propriedade Modifiers e escolha a opo Public
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a adicionar funcionrios e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cadastrar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCadastrar
Posicione sobre a propriedade Modifiers e escolha a opo Public
Terceiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a consultar Funcionrios e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.

Prof. Mauro Cafe

Posicione sobre a propriedade Text e escreva: Consultar


Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnConsultar
Posicione sobre a propriedade Modifiers e escolha a opo Public

Quarto Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e escolha a opo Public
O Form Funcionrios dever ficar dessa forma:

ADICIONE OUTRO TOOLSTRIP NO FORM FRMFUNCIONARIOS

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Sair e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Sair
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnSair
Posicione sobre a propriedade Modifiers e escolha a opo Public

Prof. Mauro Cafe

Criando o form Livros:

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add -> Windows Forms e d o nome de frmLivros.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FORM FRMLIVROS FAA:

MaximizeBox para False


FormBorderStyle para FixedSingle
StartPosition para CenterScreen
Em Text digite Cadastro de Livros
IsMdiContainer para True
Size para 680; 530

Em nosso formulrio Livros vamos criar quatro botes que sero responsveis por chamar os formulrios
filhos de Cadastro, Atualizao/Excluso e Consulta.
NO FORMULRIO FRMLIVROS COLOQUE UM TOOLSTRIP COM 4 BOTES;
Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Alterar e Excluir e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Alterar / Excluir
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnAlterarExcluir
Posicione sobre a propriedade Modifiers e escolha a opo Public
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a adicionar Livros e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cadastrar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCadastrar
Posicione sobre a propriedade Modifiers e escolha a opo Public
Terceiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a consultar Livros e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Consultar
Posicione sobre a propriedade ImageScalling e escolha None

Prof. Mauro Cafe

Posicione sobre a propriedade Name e escreva: btnConsultar


Posicione sobre a propriedade Modifiers e escolha a opo Public

Quarto Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e escolha a opo Public
O Form Livros dever ficar dessa forma:

ADICIONE OUTRO TOOLSTRIP NO FORM FRMLIVROS

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Sair e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Sair
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnSair
Posicione sobre a propriedade Modifiers e escolha a opo Public

Volte ao formulrio Principal para criarmos as chamadas aos formulrios que acabamos de criar. O que
faremos somente instanciar os formulrios e cham-los pelo mtodo ShowDialog

Com o form Principal.cs aberto d dois cliques sobre o button Clientes

Prof. Mauro Cafe


Veja que ao dar o duplo clique temos a janela de cdigo do formulrio principal com o mtodo
btnClientes_Click criado.
O btnClientes o button Clientes e o Click o evento, ou seja, o momento que ir acontecer.
Dentro deste mtodo digite:
frmClientes objClientes = new frmClientes();
objClientes.ShowDialog();

Ficar assim:

SHOW ou SHOWDIAOLOG
SHOW - Mostra uma janela e retorna
imediatamente, sem esperar a janela a ser fechada.
Consequentemente, a janela aberta no impede
que os usurios interajam com outras janelas no
aplicativo. Esse tipo de janela chamado uma
janela modeless.

SHOWDIALOG Mostra uma Janela, porm


restringi um usurio interagir com outra janela
especfica. Para interagir com outra janela
necessrio fech-la.

Retorne ao Design do formulrio Principal


D um duplo clique no boto Funcionrios
Dentro do mtodo btnFuncionarios_Click digite:
frmFuncionarios objFuncionarios = new frmFuncionarios();
objFuncionarios.ShowDialog();

Ficar assim:

Retorne ao Design do fromulrio Principal


D um duplo clique no boto Livros
Dentro do mtodo btnLivros_Click digite:

Prof. Mauro Cafe

frmLivros objLivros = new frmLivros();


objLivros.ShowDialog();

Ficar assim:

No boto sair faa uma verificao se o usurio realmente deseja sair e chame o mtodo Application.Exit(),
que ir fechar nosso sistema.

Retorne ao Design do fromulrio Principal


D um duplo clique no boto Sair
Dentro do mtodo btnSair_Click digite:
if (MessageBox.Show("Tem certeza que deseja sair?", "Biblioteca",
MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.Yes)
{
Application.Exit();
}

Ficar assim:

Prof. Mauro Cafe

Criando a Tela Cadastro de Clientes

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmCadastrarClientes.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMCADASTRARCLIENTES FAA:

MinimizeBox para False


StartPosition para CenterScreen
BackColor para 192; 255; 255
Em Text digite Incluir Clientes
Size para 550;400

COLOQUE UM CONTROLE TOOLSTRIP E INCLUA 2 BOTES;


Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Gravar dados e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Gravar dados
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnGravar
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Cancelar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cancelar Cadastro
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCancelar
Posicione sobre a propriedade Modifiers e escolha Public
ADICIONE OUTRO TOOLSTRIP NO FORM FRMCADASTRARCLIENTES

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar

Prof. Mauro Cafe

Posicione sobre a propriedade Enabled e escolha False

DEFINIO - PROPRIEDADES

Enabled - Deixar controla ativado ou desativado


Location Posicionamento do controle X e Y
Font Tipo da Letra, Estilo da Letra (Negrito, Itlico...) e Tamanho da Letra

Do ToolBox arraste seis labels para o form e altere as seguintes propriedades:


Label1

Label4

Name: lblNome
Text: Nome Completo
Font: Arial, Regular e 12
Location: 14; 82

Label2

Name: lblEst
Text: Estado
Font: Arial, Regular e 12
Location: 14; 190

Label5

Ficar assim:

Name: lblEnd
Text: Endereo
Font: Arial, Regular e 12
Location: 14; 118

Label3

Name: lblCid
Text: Cidade
Font: Arial, Regular e 12
Location: 14; 154

Name: lblTel
Text: Telefone
Font: Arial, Regular e 12
Location: 14; 227

Label6

Name: lblStatus
Text: Status
Font: Arial, Regular e 12
Location: 14; 261

Prof. Mauro Cafe


Do ToolBox arraste trs TextBox para o form e altere as seguintes propriedades:
TextBox1
Name: txtNome
Size: 270;20
Location: 152; 83

TextBox2
Name: txtEnd
Size: 270;20
Location: 152; 119

TextBox3
Name: txtCid
Size: 270;20
Location: 152; 152

Ficar assim:

Do ToolBox arraste um comboBox para o form e altere as seguintes propriedades:

Name: cboEstado

Size: 115;20

Location: 152; 191

Em Items digite um embaixo do outro:


AC AL AP AM BA CE DF ES GO MA MT
MS MG PA PB PR PE PI RJ RN RS RO
RR SC SP SE TO

Prof. Mauro Cafe


Ficar assim:

Do ToolBox arraste um MaskedTextBox para o form e altere as seguintes propriedades:

Name: txtTelefone
Size: 115;20
Location: 152; 228
No MaskedTextBox Tasks

Escolha Set Mask


Na Janela Input Mask escolha a opo Phone number
Em Mask altere para: (99) 0000-0000
Ok

Obs.: MaskedTextBox uma caixa de texto com mscara de entrada. Serve para facilitar a digitao e
determinar o que valido e o que no na digitao. No caso da mscara Phone Number no ser
necessrio digitar os parnteses e nem o hfen e s ser permitido a digitao de dados numricos sendo os
dois primeiros opcionais e os oitos ltimos obrigatrios. Cada 9 representa um dgito numrico opcional e
cada 0 um digito numrico obrigatrio.

Prof. Mauro Cafe

Ficar assim:

Do ToolBox arraste dois RadioButton para o form e altere as seguintes propriedades:


radioButton1
Name: rdbAtivo
Text: Ativo
Font: Arial, Regular e 12
Checked: True
Location: 152; 263

radioButton2
Name: rdbInativo
Text: Inativo
Font: Arial, Regular e 12
Location: 254; 263

Ficar assim:

RETORNE AO FORMULRIO FRMCLIENTES.CS

Aperte a tecla F7 para ir pgina de cdigos.


Crie os mtodos DesabilitaBotoes e HabilitaBotoes:

Prof. Mauro Cafe

Obs.:
O comando Enabled determina se o objeto esquerda ficar ativado ou desativado
Como vocs podem imaginar, estes cdigos servem para habilitar/desabilitar os botes do formulrio pai.

Retorne ao modo Design do form frmClientes


D um duplo clique sobre o boto Sair
No mtodo btnSair_Click faa:

Obs.:
O comando this refere-se ao objeto atual, neste caso, o formulrio frmClientes. O mtodo Close()
determina o fechamento do objeto. O btnSair est associado ao button Sair e o Click o evento, ou seja, em
que momento este ir acontecer. Traduzindo: Quando o usurio clicar sobre o boto Sair o mtodo entrar
em execuo.

Retorne ao modo Design do form frmClientes


D um duplo clique sobre o boto Voltar
No mtodo btnVoltar_Click faa:
private void btnVoltar_Click(object sender, EventArgs e)
{
this.Close();
}

Prof. Mauro Cafe

Retorne ao modo Design do form frmClientes


D um duplo clique sobre o boto Cadastrar
No mtodo btnCadastrar_Click faa:
//O objeto est sendo criado fora do mtodo para que o mesmo possa estar
//ativo na memria enquanto o form estiver aberto. Se estiver dentro do
//mtodo ser criado quando o mtodo entrar em execuo e morrer quando
//terminar sua execuo, ou seja, toda vez que clicar no boto ir criar
//um novo objeto
frmCadastrarClientes objfrmCadastrarClientes = new frmCadastrarClientes();
private void btnCadastrar_Click(object sender, EventArgs e)
{
//Se objeto no estiver criado, ento crio novamente. Isso necessrio,
//pois ao fechar o form filho ele deixa de exister, a se eu clicar
//novamente no boto Cadastrar do form pai no ir funcionar mais.
if (objfrmCadastrarClientes.IsDisposed)
{
objfrmCadastrarClientes = new frmCadastrarClientes();
}
//Informo a aplicao que este objeto o form filho do frmClientes
objfrmCadastrarClientes.MdiParent = this;
//chamo o mtodo que desativa os botoes do formulrio pai
this.DesabilitaBotoes(sender, e);
//vinculo ao boto cancelar do formulrio filho o mtodo para ativar
//os botes do formulrio pai
objfrmCadastrarClientes.btnCancelar.Click += new
EventHandler(this.HabilitaBotoes);
//Vinculo a execuo do mtodo HabilitaBotoes no ao fechar do objeto
//Cadastrar Clientes (tela)
objfrmCadastrarClientes.FormClosing += this.HabilitaBotoes;
//Verifica se o formulrio filho j est aberto. Se estiver no permito
//abrir novamente.
if (objfrmCadastrarClientes.Visible == false)
{
objfrmCadastrarClientes.Show();
}
else
{
MessageBox.Show("O formulrio j est aberto!", "Biblioteca",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

Execute o projeto, clique no boto Clientes e depois em Cadastrar. Dever ficar assim:

Prof. Mauro Cafe

Criando a Tela Cadastro de Funcionrios

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmCadastrarFuncionarios.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMCADASTRARFUNCINARIOS FAA:

MinimizeBox para False


StartPosition para CenterScreen
BackColor para 255; 224; 192
Em Text digite Incluir Funcionrios
Size para 550;400

COLOQUE UM CONTROLE TOOLSTRIP E INCLUA 2 BOTES;


Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Gravar dados e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Gravar dados
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnGravar
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Cancelar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cancelar Cadastro
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCancelar
Posicione sobre a propriedade Modifiers e escolha Public
Ficar assim:

Prof. Mauro Cafe


ADICIONE OUTRO TOOLSTRIP NO FORM FRMCADASTRARFUNCINARIOS

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Enabled e escolha False

Do ToolBox arraste oito labels para o form e altere as seguintes propriedades:


Label1

Label4

Label7

Name: lblNome
Text: Nome Completo
Font: Arial, Regular e 12
Location: 16; 85

Label2

Name: lblEnd
Text: Endereo
Font: Arial, Regular e 12
Location: 16; 117

Label3

Name: lblCid
Text: Cidade
Font: Arial, Regular e 12
Location: 16; 151

Name: lblEst
Text: Estado
Font: Arial, Regular e 12
Location: 16; 186

Label5

Name: lblTel
Text: Telefone
Font: Arial, Regular e 12
Location: 16; 223

Label6

Name: lblCargo
Text: Cargo
Font: Arial, Regular e 12
Location: 16; 256

Name: lblDataAdm
Text: Data Admisso
Font: Arial, Regular e 12
Location: 278; 186

Label8

Name: lblDataDem
Text: Data Demisso
Font: Arial, Regular e 12
Location: 278; 223

Prof. Mauro Cafe


Ficar assim:

Do ToolBox arraste quatro TextBox para o form e altere as seguintes propriedades:


TextBox1
Name: txtNome
Size: 360; 20
Location: 145; 82
TabIndex: 1

TextBox2
Name: txtEnd
Size: 360; 20
Location: 145; 114
TabIndex: 2

TextBox4
Name: txtCargo
Size: 360; 20
Location: 145; 253
TabIndex: 8

Ficar assim:

TextBox3
Name: txtCid
Size: 360; 20
Location: 145; 148
TabIndex: 3

Do ToolBox arraste um comboBox para o form e altere as seguintes propriedades:

Name: cboEstado

Size: 115;20

Location: 145; 183


TabIndex: 4

Em Items digite um embaixo do outro:


AC AL AP AM BA CE DF ES GO MA MT
MS MG PA PB PR PE PI RJ RN RS RO
RR SC SP SE TO

Prof. Mauro Cafe

Ficar assim:

Do ToolBox arraste trs MaskedTextBox para o form e altere as seguintes propriedades:


MaskedTextBox 1
Name: txtTel
Size: 100; 20
Location: 145; 220
TabIndex: 5

MaskedTextBox 2
Name: txtDataAdm
Size: 100; 20
Location: 405; 187
TabIndex: 6

MaskedTextBox 3
Name: txtDataDem
Size: 100; 20
Location: 405; 220
TabIndex: 7

No MaskedTextBox Tasks

No MaskedTextBox Tasks

No MaskedTextBox Tasks

Escolha Set Mask

Escolha Set Mask

Escolha Set Mask

Na Janela Input Mask escolha a Na Janela Input Mask escolha a Na Janela Input Mask escolha a
opo Phone number
opo Short date
opo Short date
Em Mask altere para:
Em Mask altere para:
Em Mask altere para
(99) 0000-0000
00/00/00
00/00/00

Ficar assim:

Prof. Mauro Cafe


ABRA O FORMULRIO FRMFUNCIONARIOS.CS

Aperte a tecla F7 para ir pgina de cdigos.


Crie os mtodos DesabilitaBotoes e HabilitaBotoes:

Como vocs podem imaginar, estes cdigos servem para habilitar/desabilitar os botes do formulrio pai.

Retorne ao modo Design do form frmFuncionarios


D um duplo clique sobre o boto Sair
No mtodo btnSair_Click faa:

Retorne ao modo Design do form frmFuncionarios


D um duplo clique sobre o boto Voltar
No mtodo btnVoltar_Click faa:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Retorne ao modo Design do form frmFuncionarios


D um duplo clique sobre o boto Cadastrar
No mtodo btnCadastrar_Click faa:

Prof. Mauro Cafe


//O objeto est sendo criado fora do mtodo para que o mesmo
//possa estar ativo na memria enquanto o form estiver aberto.
//Se estiver dentro do mtodo ser criado quando o mtodo entrar
//em execuo e morrer quando terminar sua execuo, ou seja,
//toda vez que clicar no boto ir criar um novo objeto
frmCadastrarFuncionarios objfrmCadastrarFuncionarios = new
frmCadastrarFuncionarios();
private void btnCadastrar_Click(object sender, EventArgs e)
{
//Se objeto no estiver criado, ento crio novamente.
//Isso necessrio, pois ao fechar o form filho ele deixa
//de existir, a se eu clicar novamente no boto Cadastrar do
//form pai no ir funcionar mais.
if (objfrmCadastrarFuncionarios.IsDisposed)
{
objfrmCadastrarFuncionarios = new frmCadastrarFuncionarios();
}
//Informo a aplicao que este objeto o form filho do frmFuncionaios
objfrmCadastrarFuncionarios.MdiParent = this;
//chamo o mtodo que desativa os botoes do formulrio pai
this.DesabilitaBotoes(sender, e);
//vinculo ao boto cancelar do formulrio filho o mtodo para
//ativar os botes do formulrio pai
objfrmCadastrarFuncionarios.btnCancelar.Click += new
EventHandler(this.HabilitaBotoes);
//Vinculo a execuo do mtodo HabilitaBotoes no ao fechar
//do objeto Cadastrar Funcionarios (tela)
objfrmCadastrarFuncionarios.FormClosing += this.HabilitaBotoes;
//Verifica se o formulrio filho j est aberto. Se estiver
//no permito abrir novamente.
if (objfrmCadastrarFuncionarios.Visible == false)
{
objfrmCadastrarFuncionarios.Show();
}
else
{
MessageBox.Show("O formulrio j est aberto!", "Biblioteca",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

Prof. Mauro Cafe

Criando a Tela Cadastro de Livros

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmCadastrarLivros.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMCADASTRARLIVROS FAA:

MinimizeBox para False


StartPosition para CenterScreen
BackColor para 192; 255; 192
Em Text digite Incluir Livros
Size para 550;400

COLOQUE UM CONTROLE TOOLSTRIP E INCLUA 2 BOTES;


Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Gravar dados e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Gravar dados
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnGravar
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Cancelar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cancelar Cadastro
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCancelar
Posicione sobre a propriedade Modifiers e escolha Public
ADICIONE OUTRO TOOLSTRIP NO FORM FRMCADASTRARLIVROS

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Enabled e escolha False

Prof. Mauro Cafe

Do ToolBox arraste sete labels para o form e altere as seguintes propriedades:


Label1

Name: lblNome
Text: Nome do Livro
Font: Arial, Regular e 12
Location: 13; 81

Label2

Label4

Name: lblGenero
Text: Gnero
Font: Arial, Regular e 12
Location: 13; 190

Label5

Label7

Name: lblPaginas
Text: Nmero de Pginas
Font: Arial, Regular e 12
Location: 259; 153

Ficar assim:

Name: lblAutor
Text: Autor
Font: Arial, Regular e 12
Location: 13; 116

Label3

Name: lblAno
Text: Ano
Font: Arial, Regular e 12
Location: 13; 153

Name: lblEditora
Text: Editora
Font: Arial, Regular e 12
Location: 13; 226

Label6

Name: lblStatus
Text: Status
Font: Arial, Regular e 12
Location: 13; 261

Prof. Mauro Cafe


Do ToolBox arraste quatro TextBox para o form e altere as seguintes propriedades:
TextBox1
Name: txtNome
Size: 370; 20
Location: 139; 78
TabIndex: 1

TextBox2
Name: txtAutor
Size: 370; 20
Location: 139; 113
TabIndex: 2

TextBox3
Name: txtGenero
Size: 270; 20
Location: 139; 187
TabIndex: 5

TextBox4
Name: txtEditora
Size: 270; 20
Location: 139; 223
TabIndex: 6

Ficar assim:

Do ToolBox arraste um MaskedTextBox para o form e altere as seguintes propriedades:


MaskedTextBox 1
Name: txtAno
Size: 100; 20
Location: 139; 150
TabIndex: 3

No MaskedTextBox Tasks

Escolha Set Mask

Na Janela Input Mask escolha a opo


Numeric
Em Mask altere para:
0000

Ficar assim:

Prof. Mauro Cafe


Do ToolBox arraste um NumericUpDown para o form e altere as seguintes propriedades:
NumericUpDown 1
Name: txtPaginas
Size: 97; 20
Location: 412; 155
Maximum: 1000
Minimum: 0
TabIndex: 4

Ficar assim:

DEFINIO - PROPRIEDADES

Maximum Determina o valor mximo para este controle


Minimum Determina o valor mnimo para este controle

Do ToolBox arraste dois RadioButton para o form e altere as seguintes propriedades:


radioButton1
Name: rdbDisponivel
Text: Disponvel
Font: Arial, Regular e 12
Checked: True
Location: 139; 261

Ficar assim:

radioButton2
Name: rdbIndisponivel
Text: Indisponvel
Font: Arial, Regular e 12
Location: 246; 261

Prof. Mauro Cafe


ABRA O FORMULRIO FRMLIVROS.CS

Aperte a tecla F7 para ir pgina de cdigos.


Crie os mtodos DesabilitaBotoes e HabilitaBotoes:

Retorne ao modo Design do form frmLivros


D um duplo clique sobre o boto Sair
No mtodo btnSair_Click faa:

Retorne ao modo Design do form frmLivros


D um duplo clique sobre o boto Voltar
No mtodo btnVoltar_Click faa:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Retorne ao modo Design do form frmLivros


D um duplo clique sobre o boto Cadastrar
No mtodo btnCadastrar_Click faa:

Prof. Mauro Cafe


frmCadastrarLivros objfrmCadastrarLivros = new frmCadastrarLivros();
private void btnCadastrar_Click(object sender, EventArgs e)
{
if (objfrmCadastrarLivros.IsDisposed)
{
objfrmCadastrarLivros = new frmCadastrarLivros();
}
objfrmCadastrarLivros.MdiParent = this;
this.DesabilitaBotoes(sender, e);
objfrmCadastrarLivros.btnCancelar.Click += new
EventHandler(this.HabilitaBotoes);
objfrmCadastrarLivros.FormClosing += this.HabilitaBotoes;
if (objfrmCadastrarLivros.Visible == false)
{
objfrmCadastrarLivros.Show();
}
else
{
MessageBox.Show("O formulrio j est aberto!", "Biblioteca",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

Prof. Mauro Cafe

Criando a Tela de Consulta de Clientes

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmConsultaClientes.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMCONSULTACLIENTES FAA:

MaximizeBox para False


MinimizeBox para False
StartPosition para CenterScreen
BackColor para 255; 192; 192
Em Text digite Consultar Clientes
Size para 540; 380

ADICIONE UM TOOLSTRIP NO FORM FRMCONSULTACLIENTES

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e coloque Public

ADICIONE UM GROUPBOX NO FORM FRMCONSULTACLIENTES

Clique no groupBox1.
Posicione sobre a propriedade Text e escreva: Filtro:
Posicione sobre a propriedade Font e coloque: Arial, Negrito e 12
Posicione sobre a propriedade Size e: 275; 59
Posicione sobre a propriedade Location e: 14; 27

Ficar assim:

Prof. Mauro Cafe


Do ToolBox arraste trs RadioButton para dentro do groupBox do form e altere as seguintes propriedades:
radioButton1
Name: rdbNome
Text: Nome
Font: Arial, Regular e 10
Checked: True
Location: 17; 26

radioButton2
Name: rdbCidade
Text: Cidade
Font: Arial, Regular e 10
Location: 93; 26

radioButton3
Name: rdbStatus
Text: Status
Font: Arial, Regular e 10
Location: 181; 26

Ficar assim:

Do ToolBox arraste um TextBox para o form e altere as seguintes propriedades:


TextBox1
Name: txtProcurar
Size: 217; 20
Location: 295; 36
TabIndex: 1

Ficar assim:

Do ToolBox arraste um Buton para o form e altere as seguintes propriedades:


Button1
Name: btnConsultar
Size: 84; 23
Location: 428; 61
Text: Consultar
TabIndex: 2

Ficar assim:

Prof. Mauro Cafe


Do ToolBox arraste um ListView para o form e altere as seguintes propriedades:
ListView1
Name: lstDados
Size: 499; 172
Location: 13; 100
TabIndex: 3
GridLines: True
FullRowSelect: True
MulttiSelect: False
BorderStyle: FixedSingle

Ficar assim:

DEFINIO - PROPRIEDADES

GridLines Para surgir as linhas de grade


FullRowSelect - Para selecionarmos a linha inteira do registro
MultiSelect - Para selecionar um nico registro por vez

Continuando:
Clique no ListView e depois no ListView Tasks
Escolha a opo Edit Columns
Clique no boto Add
Na propriedade Text digite: Cdigo
Na propriedade Width digite: 0

Clique novamente no boto Add


Na propriedade Text digite: Nome
Adicione mais cinco vezes e em cada um coloque um Text, conforme mostra a sequencia a seguir:
Endereo, Cidade, Estado, Telefone e Status.
Clique no boto Ok.

Para visualizar estes campos no ListView faa:


Clique no ListView Tasks
Em View escolha a opo: Details
Pronto! Agora visualizamos os campos.

Prof. Mauro Cafe

Com este formulrio o funcionrio da Biblioteca poder filtrar os Clientes pelo Nome, Cidade e Status. O
resultado da filtragem ir aparecer dentro da ListView.

Retorne ao formulrio frmClientes


D um duplo clique no boto Consultar
Adicione o seguinte cdigo:
frmConsultaClientes objfrmConsultaClientes = new frmConsultaClientes();
private void btnConsultar_Click(object sender, EventArgs e)
{
if (objfrmConsultaClientes.IsDisposed)
{
objfrmConsultaClientes = new frmConsultaClientes();
}
objfrmConsultaClientes.MdiParent = this;
this.DesabilitaBotoes(sender, e);
objfrmConsultaClientes.btnVoltar.Click += new
EventHandler(this.HabilitaBotoes);
objfrmConsultaClientes.FormClosing += this.HabilitaBotoes;
if (objfrmConsultaClientes.Visible == false)
{
objfrmConsultaClientes.Show();
}
else
{
MessageBox.Show("O formulrio j est aberto!", "Biblioteca",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

Retorne ao formulrio frmConsultaClientes


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Prof. Mauro Cafe

Criando a Tela de Consulta de Livros

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmConsultaLivros.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMCONSULTALIVROS FAA:

MaximizeBox para False


MinimizeBox para False
StartPosition para CenterScreen
BackColor para 224; 224; 224
Em Text digite Consultar Livros
Size para 540; 380

ADICIONE UM TOOLSTRIP NO FORM FRMCONSULTALIVROS

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e coloque Public

ADICIONE UM GROUPBOX NO FORM FRMCONSULTALIVROS

Clique no groupBox1.
Posicione sobre a propriedade Text e escreva: Filtro:
Posicione sobre a propriedade Font e coloque: Arial, Negrito e 12
Posicione sobre a propriedade Size e: 275; 59

Ficar assim:

Prof. Mauro Cafe


Do ToolBox arraste trs RadioButton para dentro do groupBox do form e altere as seguintes propriedades:
radioButton1
Name: rdbNome
Text: Nome
Font: Arial, Regular e 10
Checked: True
Location: 17; 26

radioButton2
Name: rdbEditora
Text: Editora
Font: Arial, Regular e 10
Location: 93; 26

radioButton3
Name: rdbStatus
Text: Status
Font: Arial, Regular e 10
Location: 181; 26

Do ToolBox arraste um TextBox para o form e altere as seguintes propriedades:


TextBox1
Name: txtProcurar
Size: 217; 20
Location: 295; 36
TabIndex: 1

Ficar assim:

Do ToolBox arraste um Buton para o form e altere as seguintes propriedades:


Button1
Name: btnConsultar
Size: 84; 23
Location: 428; 61
Text: Consultar
TabIndex: 2

Ficar assim:

Do ToolBox arraste um ListView para o form e altere as seguintes propriedades:


ListView1
Name: lstDados
Size: 499; 172
Location: 13; 100
TabIndex: 3
GridLines: True
FullRowSelect: True
MulttiSelect: False
BorderStyle: FixedSingle

Ficar assim:

Prof. Mauro Cafe

Clique no ListView e depois no ListView Tasks


Escolha a opo Edit Columns
Clique no boto Add
Na propriedade Text digite: Cdigo
Na propriedade Width digite: 0

Clique novamente no boto Add


Na propriedade Text digite: Nome do Livro
Adicione mais quatro vezes e em cada um coloque um Text, conforme mostra a sequencia a seguir:
Autor, Ano, Gnero e Editora.
Clique no boto Ok.

Para visualizar estes campos no ListView faa:


Clique no ListView Tasks
Em View escolha a opo: Details
Pronto! Agora visualizamos os campos.

Com este formulrio o funcionrio da Biblioteca poder filtrar os Livros pelo Nome, Editora e Status. O
resultado da filtragem ir aparecer dentro da ListView.

Retorne ao formulrio frmLivros


D um duplo clique no boto Consultar
Adicione o seguinte cdigo:

Prof. Mauro Cafe

frmConsultaLivros objfrmConsultarLivros = new frmConsultaLivros();


private void btnConsultar_Click(object sender, EventArgs e)
{
if (objfrmConsultarLivros.IsDisposed)
{
objfrmConsultarLivros = new frmConsultaLivros();
}
objfrmConsultarLivros.MdiParent = this;
this.DesabilitaBotoes(sender, e);
objfrmConsultarLivros.btnVoltar.Click += new EventHandler(this.HabilitaBotoes);
objfrmConsultarLivros.FormClosing += this.HabilitaBotoes;
if (objfrmConsultarLivros.Visible == false)
{
objfrmConsultarLivros.Show();
}
else
{
MessageBox.Show("O formulrio j est aberto!", "Biblioteca",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

Retorne ao formulrio frmConsultaLivros


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Execute o projeto

Prof. Mauro Cafe

Criando a Tela de Consulta de Funcionrios

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmConsultaFuncionarios.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMCONSULTAFUNCIONARIOS FAA:

MaximizeBox para False


MinimizeBox para False
StartPosition para CenterScreen
BackColor para 224; 224; 224
Em Text digite Consultar Funcionrios
Size para 540; 380

ADICIONE UM TOOLSTRIP NO FORM FRMCONSULTAFUNCIONARIOS

Abra o ToolStrip Tasks deste ToolStrip


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e coloque Public

ADICIONE UM GROUPBOX NO FORM FRMCONSULTAFUNCIONARIOS

Selecione o groupBox1.
Posicione sobre a propriedade Text e escreva: Filtro:
Posicione sobre a propriedade Font e coloque: Arial, Negrito e 12
Posicione sobre a propriedade Size e: 275; 59
Posicione sobre a propriedade Location e: 13:13

Do ToolBox arraste trs RadioButton para dentro do groupBox do form e altere as seguintes propriedades:
radioButton1
Name: rdbNome
Text: Nome
Font: Arial, Regular e 10
Checked: True
Location: 17; 26

radioButton2
Name: rdbEstado
Text: Estado
Font: Arial, Regular e 10
Location: 93; 26

radioButton3
Name: rdbCargo
Text: Cargo
Font: Arial, Regular e 10
Location: 181; 26

Prof. Mauro Cafe

Do ToolBox arraste um TextBox para o form e altere as seguintes propriedades:


TextBox1
Name: txtProcurar
Size: 217; 20
Location: 294; 24
TabIndex: 1

Ficar assim:

Do ToolBox arraste um Buton para o form e altere as seguintes propriedades:


Button1
Name: btnConsultar
Size: 84; 23
Location: 427; 49
Text: Consultar
TabIndex: 2

Ficar assim:

Do ToolBox arraste um ListView para o form e altere as seguintes propriedades:


ListView1
Name: lstDados
Size: 499; 172
Location: 13; 100
TabIndex: 3
GridLines: True
FullRowSelect: True
MulttiSelect: False
BorderStyle: FixedSingle

Ficar assim:

Clique no ListView e depois no ListView


Tasks
Escolha a opo Edit Columns
Clique no boto Add
Na propriedade Text digite: Cdigo
Na propriedade Width digite: 0

Prof. Mauro Cafe

Clique novamente no boto Add


Na propriedade Text digite: Nome
Adicione mais cinco vezes e em cada um coloque um Text, conforme mostra a sequencia a seguir:
Endereo, Cidade, Estado, Telefone e Cargo.
Clique no boto Ok.

Para visualizar estes campos no ListView faa:


Clique no ListView Tasks
Em View escolha a opo: Details
Pronto! Agora visualizamos os campos.

Retorne ao formulrio frmFuncionarios


D um duplo clique no boto Consultar
Adicione o seguinte cdigo:
frmConsultaFuncionarios objfrmConsultarFuncionarios = new
frmConsultaFuncionarios();
private void btnConsultar_Click(object sender, EventArgs e)
{
if (objfrmConsultarFuncionarios.IsDisposed)
{
objfrmConsultarFuncionarios = new frmConsultaFuncionarios();
}
objfrmConsultarFuncionarios.MdiParent = this;
this.DesabilitaBotoes(sender, e);
objfrmConsultarFuncionarios.btnVoltar.Click += new
EventHandler(this.HabilitaBotoes);
objfrmConsultarFuncionarios.FormClosing += this.HabilitaBotoes;
if (objfrmConsultarFuncionarios.Visible == false) {
objfrmConsultarFuncionarios.Show();
}
Else {
MessageBox.Show("O formulrio j est aberto!", "Biblioteca",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

Retorne ao formulrio frmConsultaFuncionarios


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

Prof. Mauro Cafe


private void btnVoltar_Click(object sender, EventArgs e)
{
this.Close();
}

Criando a Tela de Alterar / Excluir Clientes

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmAlterarExcluirClientes.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMALTERAREXCLUIRCLIENTES FAA:

MaximizeBox para False


MinimizeBox para False
StartPosition para CenterScreen
BackColor para 224; 224; 224
Em Text digite Alterar / Excluir Clientes
Size para 540; 380

ADICIONE UM TOOLSTRIP NO FORM FRMALTERAREXCLUIRCLIENTES

Abra o ToolStrip Tasks


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e coloque Public

Do ToolBox arraste um Label para o form e altere as seguintes propriedades:


Label1
Ficar assim:
Name: lblMensagem
Text: Selecione o Registro e clique
no boto para Alterar/Excluir
Font: Arial, Negrito e 12
Location: 13; 13

Prof. Mauro Cafe

Do ToolBox arraste um DataGridView para o form e altere as seguintes propriedades:


DataGridView1
Name: dgvDados
Size: 490; 225
Location: 17; 49

Ficar assim:

No DataGridView Tasks

E desmarque as opes:
Enable Adding
Enable Editing
Enable Deleting

Obs.: As opes Enable Adding, Enable Editing e Enable Deleting esto sendo desmarcadas por no
precisarmos dessas opes j que nossos dados viro de nosso banco de dados, e assim, utilizaremos os
botes Editar e Excluir para essa finalidade.
No mesmo DataGridView clique no DataGridView Tasks

Escolha Edit Columns


Clique no boto Add
Clique no Header text da Janela Add Column digite: Nome
Em Type mantenha a opo DataGridView TextBoxColumn
Clique no boto Add
Posicione novamente no Header text
Digite: Endereo e Add
Posicione no Header text
Digite: Cidade e Add
Posicione no Header text

Prof. Mauro Cafe

Digite: Estado e Add


Posicione no Header text
Digite: Telefone e Add
Posicione no Header text
Digite: Status e Add
No Type altere para: DataGridViewButtonColumn
Posicione no Header text
Digite: Editar e Add
Posicione no Header text
Digite: Excluir e Add
Clique no boto Close e depois no Ok.

Seu form dever ficar da seguinte forma:

Obs.: Para ajustar cada campo no DataGridView v na janela de propriedades e posicione (clique) em
Columns, surgir um boto com trs pontinhos ... , clique nele e vai selecionando um por um alterando a
propriedade Width para 80.

Abra o formulrio frmClientes


D um duplo clique no boto Alterar / Excluir
Adicione o seguinte cdigo:

Prof. Mauro Cafe


private void btnAlterarExcluir_Click(object sender, EventArgs e)
{
frmAlterarExcluirClientes objfrmAlterarExcluirClientes = new
frmAlterarExcluirClientes();
objfrmAlterarExcluirClientes.MdiParent = this;
this.DesabilitaBotoes(sender, e);
objfrmAlterarExcluirClientes.btnVoltar.Click += new
EventHandler(this.HabilitaBotoes);
objfrmAlterarExcluirClientes.FormClosing += this.HabilitaBotoes;
objfrmAlterarExcluirClientes.Show();
}

Retorne ao formulrio frmAlterarExcluirClientes


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Prof. Mauro Cafe

Criando a Tela de Alterar / Excluir Livros

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmAlterarExcluirLivros.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMALTERAREXCLUIRLIVROS FAA:

MaximizeBox para False


MinimizeBox para False
StartPosition para CenterScreen
BackColor para 192; 255; 192
Em Text digite Alterar / Excluir Livros
Size para 540; 380

ADICIONE UM TOOLSTRIP NO FORM FRMALTERAREXCLUIRLIVROS

Abra o ToolStrip Tasks


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e coloque Public

Do ToolBox arraste um Label para o form e altere as seguintes propriedades:


Label1
Ficar assim:
Name: lblMensagem
Text: Selecione o Registro e clique
no boto para Alterar/Excluir
Font: Arial, Negrito e 12
Location: 13; 13

Prof. Mauro Cafe


Do ToolBox arraste um DataGridView para o form e altere as seguintes propriedades:
DataGridView1
Name: dgvDados
Size: 490; 225
Location: 17; 49

Ficar assim:

No DataGridView Tasks

E desmarque as opes:
Enable Adding
Enable Editing
Enable Deleting

Obs.: As opes Enable Adding, Enable Editing e Enable Deleting esto sendo desmarcadas por no
precisarmos dessas opes j que nossos dados viro de nosso banco de dados, e assim, utilizaremos os
botes Editar e Excluir para essa finalidade.
No mesmo DataGridView clique no DataGridView Tasks

Escolha Edit Columns


Clique no boto Add
Clique no Header text da Janela Add Column digite: Livro
Em Type mantenha a opo DataGridViewTextBoxColumn
Clique no boto Add
Posicione novamente no Header text
Digite: Autor e Add
Posicione no Header text
Digite: Ano e Add
Posicione no Header text
Digite: Gnero e Add
Posicione no Header text
Digite: Editora e Add
Posicione no Header text
Digite: Pginas e Add
Altere o Type para: DataGridViewButtonColumn
Posicione no Header text
Digite: Editar e Add
Posicione no Header text
Digite: Excluir e Add
Clique no boto Close e depois no Ok.

Prof. Mauro Cafe


Seu form dever ficar da seguinte forma:

Abra o formulrio frmLivros


D um duplo clique no boto Alterar / Excluir
Adicione o seguinte cdigo:

private void btnAlterarExcluir_Click(object sender, EventArgs e)


{
frmAlterarExcluirLivros objfrmAlterarExcluirLivros = new
frmAlterarExcluirLivros();
objfrmAlterarExcluirLivros.MdiParent = this;
this.DesabilitaBotoes(sender, e);
objfrmAlterarExcluirLivros.btnVoltar.Click += new
EventHandler(this.HabilitaBotoes);
objfrmAlterarExcluirLivros.FormClosing += this.HabilitaBotoes;
objfrmAlterarExcluirLivros.Show();
}

Retorne ao formulrio frmAlterarExcluirLivros


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Prof. Mauro Cafe

Criando a Tela de Alterar / Excluir Funcionrios

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmAlterarExcluirFuncionarios.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMALTERAREXCLUIRFUNCIONARIOS FAA:

MaximizeBox para False


MinimizeBox para False
StartPosition para CenterScreen
BackColor para 255; 224; 192
Em Text digite Alterar / Excluir Funcionrios
Size para 540; 380

ADICIONE UM TOOLSTRIP NO FORM FRMALTERAREXCLUIRFUNCIONARIOS

Abra o ToolStrip Tasks


Em Dock escolha a opo bottom
Adicione um Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Voltar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Voltar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnVoltar
Posicione sobre a propriedade Modifiers e coloque Public

Do ToolBox arraste um Label para o form e altere as seguintes propriedades:


Label1
Ficar assim:
Name: lblMensagem
Text: Selecione o Registro e clique
no boto para Alterar/Excluir
Font: Arial, Negrito e 12
Location: 13; 13

Prof. Mauro Cafe

Do ToolBox arraste um DataGridView para o form e altere as seguintes propriedades:


DataGridView1
Name: dgvDados
Size: 490; 225
Location: 17; 49

Ficar assim:

No DataGridView Tasks

E desmarque as opes:
Enable Adding
Enable Editing
Enable Deleting

No mesmo DataGridView clique no DataGridView Tasks

Escolha Edit Columns


Clique no boto Add
Clique no Header text da Janela Add Column digite: Nome
Em Type mantenha a opo DataGridViewTextBoxColumn
Clique no boto Add
Posicione novamente no Header text
Digite: Endereo e Add
Posicione no Header text
Digite: Cidade e Add
Posicione no Header text
Digite: Estado e Add
Posicione no Header text
Digite: Telefone e Add
Posicione no Header text
Digite: Cargo e Add
Altere o Type para: DataGridViewButtonColumn
Posicione no Header text
Digite: Editar e Add
Posicione no Header text
Digite: Excluir e Add
Clique no boto Close e depois no Ok.

Prof. Mauro Cafe

Seu form dever ficar da seguinte forma:

Abra o formulrio frmFuncionarios


D um duplo clique no boto Alterar / Excluir
Adicione o seguinte cdigo:

private void btnAlterarExcluir_Click(object sender, EventArgs e)


{
frmAlterarExcluirFuncionarios objfrmAlterarExcluirFuncionarios = new
frmAlterarExcluirFuncionarios();
objfrmAlterarExcluirFuncionarios.MdiParent = this;
this.DesabilitaBotoes(sender, e);
objfrmAlterarExcluirFuncionarios.btnVoltar.Click += new
EventHandler(this.HabilitaBotoes);
objfrmAlterarExcluirFuncionarios.FormClosing += this.HabilitaBotoes;
objfrmAlterarExcluirFuncionarios.Show();
}

Retorne ao formulrio frmAlterarExcluirFuncionarios


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Agora vamos codificar todas as telas fazendo o cadastro, alterao, deleo e consulta dos dados.

Prof. Mauro Cafe

Abra o form frmCadastrarClientes


Do ToolBox arraste um ErrorProvider para o form e altere as seguintes propriedades:
errorProvider1
Name: epErro
BlinkStyle para: NeverBLink

De:

Para:

Obs.: Este controle (ErrorProvider) ser responsvel por fazer a validao dos dados.
D um duplo clique sobre o boto Gravar dados.
Surgindo a tela de cdigo declare:

No mtodo btnGravar_Click acrescente o cdigo a seguir::


private void btnGravar_Click(object sender, EventArgs e)
{
Gravar();
}

Aps este mtodo crie a funo Gravar():


private void Gravar()
{
//Crio uma varivel booleana que ir verificar se os campos esto validados
bool camposValidados = false;
try
{
//Instancio a classe de conexo passando como parmetro a string de
//conexo ao DataBase Biblioteca
SqlConnection objConexao = new SqlConnection(@"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Biblioteca.mdf;Integrated
Security=True;User Instance=True");
//Armazeno em uma varivel do tipo string minha instruo SQL
//referente insero do registro concatenando os valores
//parametrizados, referentes aos campos que sero preenchidos no form
string strConn = @"INSERT INTO Clientes (Nome_Clientes, Endereco_Clientes,
Cidade_Clientes, Estado_Clientes,Telefone_Clientes, Status_Clientes) VALUES
(@Nome, @Endereco, @Cidade, @Estado, @Telefone, @Status)";
//Uso o objeto instanciado passando como parmetro a string
//criada anteriomente e o objeto de conexo ao banco
SqlCommand objCommand = new SqlCommand(strConn, objConexao);

Prof. Mauro Cafe


#region Validaes dos Campos
//Fao a verificao: se os campos do form estiverem
//diferentes de nulos uso o mtodo AddWithValue passando
//como parmetro o Value parametrizado do Insert acima.
//Se os campos estiverem vazios, chamo o ErrorProvider
//disparando o erro ao usurio nome
if (!String.IsNullOrEmpty(txtNome.Text)) {
objCommand.Parameters.AddWithValue("@Nome", txtNome.Text);
camposValidados = true;
epErro.SetError(txtNome, null);
}
else {
epErro.SetError(txtNome, "O campo Nome obrigatrio!");
camposValidados = false;
}
if (!String.IsNullOrEmpty(txtEnd.Text)) {
objCommand.Parameters.AddWithValue("@Endereco", txtEnd.Text);
camposValidados = true;
epErro.SetError(txtEnd, null);
}
else {
epErro.SetError(txtEnd, "O campo Endereo obrigatrio!");
camposValidados = false;
}
if (!String.IsNullOrEmpty(txtCid.Text)) {
objCommand.Parameters.AddWithValue("@Cidade", txtCid.Text);
camposValidados = true;
epErro.SetError(txtCid, null);
}
else {
epErro.SetError(txtCid, "O campo Cidade obrigatrio!");
camposValidados = false;
}
if (rdbAtivo.Checked) {
objCommand.Parameters.AddWithValue("@Status", "A");
camposValidados = true;
}
else {
objCommand.Parameters.AddWithValue("@Status", "I");
camposValidados = true;
}
if (!String.IsNullOrEmpty(txtTelefone.Text)) {
objCommand.Parameters.AddWithValue("@Telefone", txtTelefone.Text);
camposValidados = true;
}
if (cboEstado.SelectedIndex > -1) {
objCommand.Parameters.AddWithValue("@Estado", cboEstado.SelectedItem);
camposValidados = true;
epErro.SetError(cboEstado, null);
}
else {
epErro.SetError(cboEstado, "O campo Estado obrigatrio!");
camposValidados = false;
}
#endregion

Prof. Mauro Cafe

//Verifico se o retorno de minha varivel camposValidados true


if (camposValidados) {
//Abro a conexo
objConexao.Open();
//Uso o mtodo ExecuteNonQuery para executar os comandos e
//realizar o Insert no banco
objCommand.ExecuteNonQuery();
//Fecho a conexo
objConexao.Close();
//Exibo a mensagem ao usurio de confirmao da insero no banco
MessageBox.Show("Registro inserido com sucesso!", "Mensagem",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
//Chamo o mtodo para limpar os campos e dou o foco ao txtNome
LimparCampos();
txtNome.Focus();
//Habilito o boto Voltar para o usurio
btnVoltar.Enabled = true;
}
else {
MessageBox.Show("Ops, ocorreram erros!\n\nPreencha os campos
e tente novamente", "Mensagem", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Depois da funo Gravar() acrescente:


private void LimparCampos()
{
txtNome.Text = "";
txtEnd.Text = "";
txtCid.Text = "";
cboEstado.Text = "";
txtTelefone.Text = "";
rdbAtivo.Checked = false;
rdbInativo.Checked = false;
}

Retorne ao modo design do form frmCadastrarClientes


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Note no cdigo acima que a validao do campo Telefone est diferente do restante, nele s estou
verificando se contm algo digitado, se conter gravado, seno no fao nada, j que o mesmo foi definido
na modelagem dos dados como poder ter valor nulo.

Prof. Mauro Cafe


Rode a aplicao, grave um registro como teste e verifique se aparece a seguinte mensagem:

Prof. Mauro Cafe

Abra o form frmCadastrarLivros


Do ToolBox arraste um ErrorProvider para o form e altere as seguintes propriedades:
errorProvider1
Name: epErro
BlinkStyle para: NeverBLink

De:

Para:

Obs.: Este controle (ErrorProvider) ser responsvel por fazer a validao dos dados.
D um duplo clique sobre o boto Gravar dados.
Surgindo a tela de cdigo declare:

No mtodo btnGravar_Click acrescente o cdigo a seguir::


private void btnGravar_Click(object sender, EventArgs e)
{
Gravar();
}

Aps este mtodo crie a funo Gravar():


private void Gravar()
{
bool camposValidos = false;
try {
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"INSERT INTO LIVROS (Nome_Livro, Autor_Livro, Ano_Livro,
Genero_Livro, Editora_Livro, Paginas_Livro, Status_Livro) VALUES (@NomeLivro,
@Autor, @Ano, @Genero, @Editora, @Paginas, @Status)";
SqlCommand objCommand = new SqlCommand(strConn, objConexao);
#region Validaes dos Campos
if (rdbDisponivel.Checked) {
objCommand.Parameters.AddWithValue("@Status", "D");
camposValidos = true;
}
else {
objCommand.Parameters.AddWithValue("@Status", "I");
camposValidos = true;
}

Prof. Mauro Cafe


if (!String.IsNullOrEmpty(txtNome.Text)) {
objCommand.Parameters.AddWithValue("@NomeLivro", txtNome.Text);
camposValidos = true;
epErro.SetError(txtNome, null);
}
else {
epErro.SetError(txtNome, "O campo Nome obrigatrio");
camposValidos = false;
}
if (!String.IsNullOrEmpty(txtAutor.Text)) {
objCommand.Parameters.AddWithValue("@Autor", txtAutor.Text);
camposValidos = true;
epErro.SetError(txtAutor, null);
}
else {
epErro.SetError(txtAutor, "O campo Autor obrigatrio");
camposValidos = false;
}
if (!String.IsNullOrEmpty(txtAno.Text)) {
objCommand.Parameters.AddWithValue("@Ano", txtAno.Text);
camposValidos = true;
epErro.SetError(txtAno, null);
}
else {
epErro.SetError(txtAno, "O campo Ano obrigatrio");
camposValidos = false;
}
if (!String.IsNullOrEmpty(txtGenero.Text)) {
objCommand.Parameters.AddWithValue("@Genero", txtGenero.Text);
camposValidos = true;
epErro.SetError(txtGenero, null);
}
else {
epErro.SetError(txtGenero, "O campo Gnero obrigatrio");
camposValidos = false;
}
if (!String.IsNullOrEmpty(txtEditora.Text)) {
objCommand.Parameters.AddWithValue("@Editora", txtEditora.Text);
camposValidos = true;
epErro.SetError(txtEditora, null);
}
else {
epErro.SetError(txtEditora, "O campo Editora obrigatrio");
camposValidos = false;
}

objCommand.Parameters.AddWithValue("@Paginas", txtPaginas.Value);

#endregion
if (camposValidos) {
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Registro inserido com sucesso!",

Prof. Mauro Cafe


LimparCampos();
txtNome.Focus();
btnVoltar.Enabled = true;
}
else {
MessageBox.Show("Ops, ocorreram erros!\n\n Preencha
os campos e tente novamente", "Mensagem",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Depois da funo Gravar() acrescente:


private void LimparCampos()
{
txtNome.Text = "";
txtAutor.Text = "";
txtAno.Text = "";
txtGenero.Text = "";
txtEditora.Text = "";
rdbDisponivel.Checked = true;
rdbIndisponivel.Checked = false;
txtPaginas.Value = 0;
}

Retorne ao modo design do form frmCadastrarLivros


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Note no cdigo acima que a validao do campo Pgina est diferente do restante, nele s estou
verificando se contm algo digitado, se conter gravado, seno no fao nada, j que o mesmo foi definido
na modelagem dos dados como poder ter valor nulo.
Rode a aplicao, grave um registro e verifique se aparece a seguinte mensagem:

Prof. Mauro Cafe

Abra o form frmCadastrarFuncionarios


Do ToolBox arraste um ErrorProvider para o form e altere as seguintes propriedades:
errorProvider1
Name: epErro
BlinkStyle para: NeverBLink

De:

Para:

D um duplo clique sobre o boto Gravar dados.


Surgindo a tela de cdigo declare:

No mtodo btnGravar_Click acrescente o cdigo a seguir::


private void btnGravar_Click(object sender, EventArgs e)
{
Gravar();
}

Aps este mtodo crie a funo Gravar():


private void Gravar()
{
bool camposValidos = false;
try
{
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"INSERT INTO FUNCIONARIOS (Nome_Funcionario,
Endereco_Funcionario, Cidade_Funcionario, Estado_Funcionario,
Telefone_Funcionario, Cargo_Funcionario, Data_Admissao_Funcionario,
Data_Demissao_Funcionario) VALUES (@Nome, @Endereco, @Cidade,
@Estado, @Telefone, @Cargo, @DataAdm, @DataDem)";
SqlCommand objCommand = new SqlCommand(strConn, objConexao);
#region Validaes dos Campos
//Nome do funcionrio
if (!String.IsNullOrEmpty(txtNome.Text)) {
objCommand.Parameters.AddWithValue("@Nome", txtNome.Text);
camposValidos = true;
epErro.SetError(txtNome, null);
}

Prof. Mauro Cafe


else {
epErro.SetError(txtNome, "O campo Nome obrigatrio");
camposValidos = false;
}
//Endereo do Funcionio
if (!String.IsNullOrEmpty(txtEnd.Text)) {
objCommand.Parameters.AddWithValue("@Endereco", txtEnd.Text);
camposValidos = true;
epErro.SetError(txtEnd, null);
}
else {
epErro.SetError(txtEnd, "O campo Endereo obrigatrio");
camposValidos = false;
}
//Cidade do Funcionrio
if (!String.IsNullOrEmpty(txtCid.Text)) {
objCommand.Parameters.AddWithValue("@Cidade", txtCid.Text);
camposValidos = true;
epErro.SetError(txtCid, null);
}
else {
epErro.SetError(txtCid, "O campo Cidade obrigatrio");
camposValidos = false;
}
//Estado do Funcionrio
if (!String.IsNullOrEmpty(cboEstado.Text)) {
objCommand.Parameters.AddWithValue("@Estado", cboEstado.Text);
camposValidos = true;
epErro.SetError(cboEstado, null);
}
else {
epErro.SetError(cboEstado, "O campo Estado obrigatrio");
camposValidos = false;
}
//Cargo do Funcionrio
if (!String.IsNullOrEmpty(txtCargo.Text)) {
objCommand.Parameters.AddWithValue("@Cargo", txtCargo.Text);
camposValidos = true;
epErro.SetError(txtCargo, null);
}
else {
epErro.SetError(txtCargo, "O campo Cargo obrigatrio");
camposValidos = false;
}
//Data de Admisso do Funcionrio
if (IsDate(txtDataAdm.Text)) {
objCommand.Parameters.AddWithValue("@DataAdm", txtDataAdm.Text);
camposValidos = true;
epErro.SetError(txtDataAdm, null);
}
else {
epErro.SetError(txtDataAdm, "O campo Data de Admisso obrigatrio");
camposValidos = false;
}

Prof. Mauro Cafe


//Data de Demisso do Funcionrio
if (IsDate(txtDataDem.Text)) {
objCommand.Parameters.AddWithValue("@DataDem", txtDataDem.Text);
camposValidos = true;
epErro.SetError(txtDataDem, null);
}
else
//DBNull.Value faz com que o parametro seja nulo. Se no fizer
//assim, ele ir considerar a mscara de entrada e tentara
//grav-lo. Como no date dar erro.
objCommand.Parameters.AddWithValue("@DataDem", DBNull.Value);
//Telefone do Funcionrio
objCommand.Parameters.AddWithValue("@Telefone", txtTel.Text);
#endregion
if (camposValidos) {
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Registro inserido com sucesso!",
"Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
LimparCampos();
txtNome.Focus();
btnVoltar.Enabled = true;
}
else {
MessageBox.Show("Ops, ocorreram erros!\n\n
Preencha os campos e tente novamente", "Mensagem",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}

Depois da funo Gravar() acrescente:


private void LimparCampos()
{
txtNome.Text = "";
txtEnd.Text = "";
txtCid.Text = "";
cboEstado.Text = "";
txtTel.Text = "";
txtCargo.Text = "";
txtDataAdm.Text = "";
txtDataDem.Text = "";
}

Depois da funo LimparCampos() acrescente:

Prof. Mauro Cafe


//Estamos criando esta funo por ela no existir no csharp.
//Esta funo recebe um valor do tipo string.
//Se o valor recebido pela funao for data ento retorna true seno false.
private bool IsDate (string inputDate) {
DateTime Temp;
if(DateTime.TryParse(inputDate,out Temp)==true) return true; else return false;
}

Retorne ao modo design do form frmCadastrarFuncionarios


D um duplo clique no boto Voltar
Adicione o seguinte cdigo:

private void btnVoltar_Click(object sender, EventArgs e)


{
this.Close();
}

Prof. Mauro Cafe

Criar um DataSet Tipado


Um DataSet Tipado um Layer (camada) entre o Banco de dados e os forms do C#. Um DataSet Tipado usa
a informao contida em um arquivo (.xsd) que um arquivo de esquema XML que permite gerar uma
nova classe. Toda a informao deste esquema representada por tabelas, colunas e linhas.

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add -> New Item
Em Installed Templates escolha a opo Data.

Depois escolha a opo DataSet conforme mostra a figura acima.


Posicione em Name e digite o seguinte nome: BibliotecaDS.xsd
Clique no boto Add

COM O DATASET ABERTO, V NO SERVER EXPLORER

D um duplo clique sobre o banco de dados: Biblioteca.mdf


Abra a pasta Tables
Arraste as trs tabelas (Clientes, Funcionrios e Livros) para dentro do DataSet.

Veja que em cada tabela temos uma query pronta Fill,GetData(). Ela um select padro, ou seja, um
select que busca (mostra) todos os dados da tabela, sem restries (condio).
Para o DataSet de Clientes, teremos 3 tipos de consultas, cada uma com sua filtragem respectiva, para o
Nome, para a Cidade e para o Status.

Prof. Mauro Cafe

DataSet BibliotecaDS - Clientes

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Clientes.

Escolha a opo Configure conforme mostra a figura acima.


Veja que ao abrir a tela TableAdapter Configuration Wizard temos a instruo SQL padro de nosso
DataSet.

Clique no boto Advanced Options


E desmarque todas as opes, j que no precisamos que sejam criados automaticamente as
instrues Insert, Update e Delete.
Clique no boto Ok
Para finalizar clique no boto Finish

Prof. Mauro Cafe


CRIE A CONSULTA FILLBYCIDADE

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Clientes.

Escolha a opo Add Query.


Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next
Obs.: S utilizaremos o segundo select caso o mesmo tenha como finalidade mostrar uma nica
informao, por exemplo, o total de vendas, o total de produtos vendidos, onde usamos funes como
Sum, Count, dentre outros.

Posicione no final desta clausula e acrescente a condio conforme mostra a figura a seguir:

Obs.: Caso queira testar a instruo, clique no boto Query Builder e depois em Execute Query
O @Cidade um parmetro que ser populado (preenchido) por uma informao que ser digitada por
um usurio na tela de consulta de clientes. atravs do parmetro que possibilitamos ter uma nica
consulta, valendo assim, para qualquer cidade.

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByCidade
No segundo Method name altere para: GetDataByCidade
Finish

Veja que em ClientesTableAdapter temos agora duas consultas.

Prof. Mauro Cafe


CRIE A CONSULTA FILLBYNOME

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Clientes.

Add Query.
Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next

Altere a clausula atual para:

O @Nome tambm um parmetro que tambm ser populado (preenchido) por uma informao que
ser digitada por um usurio na tela de consulta de clientes.

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByNome
No segundo Method name altere para: GetDataByNome e Finish

CRIE A CONSULTA FILLBYSTATUS

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Clientes.

Add Query.
Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next

Altere a clausula atual para:

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByStatus
No segundo Method name altere para: GetDataByStatus e Finish

Prof. Mauro Cafe


ABRA O FRMCONSUTACLIENTES

Aperte a tecla F7 para ir a janela de cdigo


Declare o DataSet criado, conforme mostra a seguir

Crie o mtodo Consultar()

private void Consutar()


{
try
{
//Instancio o DataTable e TableAdapter de Clientes
BibliotecaDS.ClientesDataTable objClientesDataTable = new
BibliotecaDS.ClientesDataTable();
ClientesTableAdapter objClientesTableAdapter = new
ClientesTableAdapter();
//Verifico qual RadioButton o usurio checou e se o txtProcurar
//no est vazio para chamar o respectivo mtodo
if (rdbNome.Checked && !String.IsNullOrEmpty(txtProcurar.Text))
//Preencho o TableAdapter com o mtodo FillByNome,
//passando o DataTable e o txtProcurar como parmetros
objClientesTableAdapter.FillByNome(objClientesDataTable,
"%" + txtProcurar.Text + "%");
else if (rdbCidade.Checked && !String.IsNullOrEmpty(txtProcurar.Text))
//Preencho o TableAdapter com o mtodo FillByCidade,
//passando o DataTable e o txtConsulta como parmetros
objClientesTableAdapter.FillByCidade(objClientesDataTable,
"%" + txtProcurar.Text + "%");
else if (rdbStatus.Checked &&
|| rdbStatus.Checked
|| rdbStatus.Checked
|| rdbStatus.Checked

txtProcurar.Text ==
&& txtProcurar.Text
&& txtProcurar.Text
&& txtProcurar.Text

"a"
== "A"
== "i"
== "I")

//Preencho o TableAdapter com o mtodo FillByEstatus,


//passando o DataTable e o txtConsulta como parmetros
objClientesTableAdapter.FillByStatus(objClientesDataTable,
txtProcurar.Text);

//Limpo os dados do meu ListView


lstDados.Items.Clear();

Prof. Mauro Cafe

//Uso o lao foreach para percorrer as linhas do ClientesDataTable


//e carreg-las em meu ListView
foreach (DataRow objDataRow in objClientesDataTable.Rows)
{
//Instancio a classe ListViewItem e vou adicionando o item
//e subitens
ListViewItem objListViewItem = new ListViewItem();
objListViewItem.Text = objDataRow[0].ToString();
objListViewItem.SubItems.Add(objDataRow[1].ToString());
objListViewItem.SubItems.Add(objDataRow[2].ToString());
objListViewItem.SubItems.Add(objDataRow[3].ToString());
objListViewItem.SubItems.Add(objDataRow[4].ToString());
objListViewItem.SubItems.Add(objDataRow[5].ToString());
if (objDataRow[6].ToString() == "A")
{
objListViewItem.SubItems.Add("Ativo");
}
else
{
objListViewItem.SubItems.Add("Inativo");
}
//No final adiciono os itens em meu ListView, passando
//como parmetro o objListViewItem carregado
lstDados.Items.Add(objListViewItem);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Retorne ao modo Design do formulrio frmConsultaClientes


D um duplo clique no boto Consultar
Acrescente o cdigo:
private void btnConsultar_Click(object sender, EventArgs e)
{
//Chamando a funo Consultar
Consutar();
}

Prof. Mauro Cafe

DataSet BibliotecaDS - Livros

Abra o dataSet BibliotecaDS


D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Livros.

Escolha a opo Configure conforme mostra a figura acima.


Veja que ao abrir a tela TableAdapter Configuration Wizard temos a instruo SQL padro de nosso
DataSet.

Clique no boto Advanced Options


E desmarque todas as opes, j que no precisamos que sejam criados automaticamente as
instrues Insert, Update e Delete.
Clique no boto Ok
Para finalizar clique no boto Finish

Prof. Mauro Cafe

CRIE A CONSULTA FILLBYNOME

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Livros.

Escolha a opo Add Query.


Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next
Obs.: S utilizaremos o segundo select caso o mesmo tenha como finalidade mostrar uma nica
informao, por exemplo, o total de vendas, o total de produtos vendidos, onde usamos funes como
Sum, Count, dentre outros.

Posicione no final desta clausula e acrescente a condio conforme mostra a figura a seguir:

Obs.: Caso queira testar a instruo, clique no boto Query Builder e depois em Execute Query
O @Nome um parmetro que ser populado (preenchido) por uma informao que ser digitada por
um usurio na tela de consulta de Livros.

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByNome
No segundo Method name altere para: GetDataByNome
Finish

Prof. Mauro Cafe

CRIE A CONSULTA FILLBYEDITORA

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Livros.

Add Query.
Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next

Altere a clausula atual para:

O @Editora tambm um parmetro que tambm ser populado (preenchido) por uma informao que
ser digitada por um usurio na tela de consulta de Livros.

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByEditora
No segundo Method name altere para: GetDataByEditora e Finish

CRIE A CONSULTA FILLBYSTATUS

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Livros.

Add Query.
Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next

Altere a clausula atual para:

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByStatus

Prof. Mauro Cafe

No segundo Method name altere para: GetDataByStatus e Finish

ABRA O FRMCONSUTALIVROS

Aperte a tecla F7 para ir a janela de cdigo


Declare o DataSet criado, conforme mostra a seguir

Crie o mtodo Consultar()

private void Consutar()


{
try
{
//Instancio o DataTable e TableAdapter de Livros
BibliotecaDS.LivrosDataTable objLivrosDataTable =
new BibliotecaDS.LivrosDataTable();
LivrosTableAdapter objLivrosTableAdapter = new LivrosTableAdapter();
//Verifico qual RadioButton o usurio clicou e se o txtProcurar
//no est vazio para chamar o respectivo mtodo
if (rdbNome.Checked && !String.IsNullOrEmpty(txtProcurar.Text))
//Preencho o TableAdapter com o mtodo FillByNome, passando
//o DataTable e o txtProcurar como parmetros
objLivrosTableAdapter.FillByNome(objLivrosDataTable,
"%" + txtProcurar.Text + "%");
else if (rdbEditora.Checked && !String.IsNullOrEmpty(txtProcurar.Text))
//Preencho o TableAdapter com o mtodo FillByEditora,
//passando o DataTable e o txtConsulta como parmetros
objLivrosTableAdapter.FillByEditora(objLivrosDataTable,
"%" + txtProcurar.Text + "%");
else if (rdbStatus.Checked && txtProcurar.Text == "d"
|| rdbStatus.Checked && txtProcurar.Text == "D"
|| rdbStatus.Checked && txtProcurar.Text == "i"
|| rdbStatus.Checked && txtProcurar.Text == "I")
//Preencho o TableAdapter com o mtodo FillByCidade, passando
//o DataTable e o txtConsulta como parmetros
objLivrosTableAdapter.FillByStatus(objLivrosDataTable,
txtProcurar.Text);

//Limpo os dados do meu ListView


lstDados.Items.Clear();

Prof. Mauro Cafe


//Uso o lao foreach para percorrer as linhas do ClientesDataTable
//e carreg-las em meu ListView
foreach (DataRow objDataRow in objLivrosDataTable.Rows)
{
//Instancio a classe ListViewItem e vou adicionando o item e
//subitens
ListViewItem objListViewItem = new ListViewItem();
objListViewItem.Text = objDataRow[0].ToString();
objListViewItem.SubItems.Add(objDataRow[1].ToString());
objListViewItem.SubItems.Add(objDataRow[2].ToString());
objListViewItem.SubItems.Add(objDataRow[3].ToString());
objListViewItem.SubItems.Add(objDataRow[4].ToString());
objListViewItem.SubItems.Add(objDataRow[5].ToString());
//No final adiciono os itens em meu ListView, passando como
//parmetro o objListViewItem carregado
lstDados.Items.Add(objListViewItem);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Retorne ao modo Design do formulrio frmConsultaLivros


D um duplo clique no boto Consultar
Acrescente o cdigo:
private void btnConsultar_Click(object sender, EventArgs e)
{
//Chama o mtodo Consultar
Consultar();
}

Prof. Mauro Cafe

DataSet BibliotecaDS - Funcionarios

Abra o dataSet BibliotecaDS


D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Funcionarios.

Escolha a opo Configure.


Veja que ao abrir a tela TableAdapter Configuration Wizard temos a instruo SQL padro de nosso
DataSet.

Clique no boto Advanced Options


E desmarque todas as opes, j que no precisamos que sejam criados automaticamente as
instrues Insert, Update e Delete.
Clique no boto Ok
Para finalizar clique no boto Finish

CRIE A CONSULTA FILLBYNOME

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Funcionarios.

Escolha a opo Add Query.


Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next

Posicione no final desta clausula e acrescente a condio conforme mostra a figura a seguir:

Prof. Mauro Cafe

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByNome
No segundo Method name altere para: GetDataByNome
Finish

CRIE A CONSULTA FILLBYESTADO

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Funcionarios.

Add Query.
Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next

Altere a clausula atual para:

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByEstado
No segundo Method name altere para: GetDataByEstado e Finish

CRIE A CONSULTA FILLBYCARGO

D um clique com o boto direito sobre o mtodo Fill,GetData() da tabela Funcionarios.

Add Query.
Mantenha a opo Use SQL statemetes selecionada e Next
Mantenha a opo Select which returns rows selecionada e Next

Altere a clausula atual para:

Prof. Mauro Cafe

Clique no boto Next


Mantenha todas as opes ativadas
No primeiro Method name altere para: FillByCargo
No segundo Method name altere para: GetDataByCargo e Finish

ABRA O FRMCONSUTAFUCNIONARIOS

Aperte a tecla F7 para ir a janela de cdigo


Declare o DataSet criado, conforme mostra a seguir

Crie o mtodo Consultar()

private void Consultar()


{
try
{
//Instancio o DataTable e TableAdapter de Livros
BibliotecaDS.FuncionariosDataTable objFuncionariosDataTable =
new BibliotecaDS.FuncionariosDataTable();
FuncionariosTableAdapter objFuncionariosTableAdapter =
new FuncionariosTableAdapter();
//Verifico qual RadioButton o usurio clicou e se o txtProcurar
//no est vazio para chamar o respectivo mtodo
if (rdbNome.Checked && !String.IsNullOrEmpty(txtProcurar.Text))
//Preencho o TableAdapter com o mtodo FillByNome, passando o
//DataTable e o txtProcurar como parmetros
objFuncionariosTableAdapter.FillByNome(objFuncionariosDataTable,
"%" + txtProcurar.Text + "%");
else if (rdbEstado.Checked && !String.IsNullOrEmpty(txtProcurar.Text))
//Preencho o TableAdapter com o mtodo FillByEstado, passando
//o DataTable e o txtConsulta como parmetros
objFuncionariosTableAdapter.FillByEstado(objFuncionariosDataTable,
txtProcurar.Text);
else if (rdbCargo.Checked && !String.IsNullOrEmpty(txtProcurar.Text))
//Preencho o TableAdapter com o mtodo FillByCargo, passando
//o DataTable e o txtConsulta como parmetros
objFuncionariosTableAdapter.FillByCargo(objFuncionariosDataTable,
"%" + txtProcurar.Text + "%");
//Limpo os dados do meu ListView
lstDados.Items.Clear();

Prof. Mauro Cafe


//Uso o lao foreach para percorrer as linhas do
//FuncionarioDataTable e carreg-las em meu ListView
foreach (DataRow objDataRow in objFuncionariosDataTable.Rows)
{
//Instancio a classe ListViewItem e vou adicionando o item
//e subitens
ListViewItem objListViewItem = new ListViewItem();
objListViewItem.Text = objDataRow[0].ToString();
objListViewItem.SubItems.Add(objDataRow[1].ToString());
objListViewItem.SubItems.Add(objDataRow[2].ToString());
objListViewItem.SubItems.Add(objDataRow[3].ToString());
objListViewItem.SubItems.Add(objDataRow[4].ToString());
objListViewItem.SubItems.Add(objDataRow[5].ToString());
objListViewItem.SubItems.Add(objDataRow[6].ToString());
//No final adiciono os itens em meu ListView, passando como
//parmetro o objListViewItem carregado
lstDados.Items.Add(objListViewItem);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Retorne ao modo Design do formulrio frmConsultaFuncionarios


D um duplo clique no boto Consultar
Acrescente o cdigo:
private void btnConsultar_Click(object sender, EventArgs e)
{
//Chama o mtodo Consultar
Consultar();
}

Prof. Mauro Cafe

Tela de Alterar / Excluir Clientes

Abra a o formulrio frmAlterarExcluirClientes.cs

Ao criar o frmAlterarExcluirClientes foi dito para adicionar colunas referentes aos campos no dataGrid, na
verdade no precisaremos deles. Vamos exclu-los e deixar apenas os botes Editar e Excluir.

Clique no DataGridView
Abra o DataGridView Tasks e Edit Columns
Exclua todas as colunas, menos os botes Editar e Excluir.
Ok

Abra o DataGridView Tasks do DataGridView.

Em Choose Data Source escolha a fonte de dados do DataGridView;


Clique em Other Data Sources
Clique em Project Data Sources
Clique em BibliotecDS
Clique em Clientes como mostra a imagem:

Finalizando o layout de nosso DataGridView, clique novamente em Edit Columns, altere o nome das
colunas na propriedade Header Text, e altere para False a propriedade Visible da coluna Id_Cliente.

Prof. Mauro Cafe


De:

Para:

Abra novamente o DataGridView Tasks do DataGridView.


Clique na opo Edit Columns

Clique no boto Editar


o Na Propriedade Text digite: >
o Na Propriedade HeaderText deixe vazio
o Na Propriedade Width digite: 20
o Na Propriedade UseColumnTextForButtonValue coloque True
o Na Propriedade Name digite: Editar

Clique no boto Excluir


o Na Propriedade Text digite: X
o Na Propriedade HeaderText deixe vazio
o Na Propriedade Width digite: 20
o Na Propriedade UseColumnTextForButtonValue coloque True
o Na Propriedade Name digite: Excluir

Movimente estes dois botes para o Final

DEFINIO - PROPRIEDADES

UseColumnTextForButtonValue Para que sejam exibidos o nome dos botes no Grid

V pgina de cdigos e crie as variveis abaixo, que sero pblicas em nossa pgina, responsveis por
armazenar os valores de cada clula referente linha selecionada no grid:

Aperte a tecla F7 para ir janela de cdigo


Declare as variveis conforme mostra a seguir:

Prof. Mauro Cafe

Retorne ao modo design do form frmAlterarExcluirClientes


D um clique no DataGridView
Na Janela de Propriedades clique no boto Events (Raio)
D um duplo clique sobre o evento CellMouseClick e digite:
private void dgvDados_CellMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
//Se a clula que o usurio clicou for a do boto Editar atribuo
//para as variveis publicas o valor de cada clula do Grid,
//referente ao respectivo registro
if (dgvDados.CurrentCell.Value.ToString() == ">")
{
//Passo o ID do registro que ser til em meu UPDATE no outro form
codigo = Convert.ToInt32(dgvDados.CurrentRow.Cells[0].FormattedValue);
nome = dgvDados.CurrentRow.Cells[1].FormattedValue.ToString();
endereco = dgvDados.CurrentRow.Cells[2].FormattedValue.ToString();
cidade = dgvDados.CurrentRow.Cells[3].FormattedValue.ToString();
estado = dgvDados.CurrentRow.Cells[4].FormattedValue.ToString();
telefone = dgvDados.CurrentRow.Cells[5].FormattedValue.ToString();
status = dgvDados.CurrentRow.Cells[6].FormattedValue.ToString();
//Chamo o mtodo Editar, passando as variveis como parmetros
EditarRegistro(codigo, nome, endereco, cidade, estado, telefone, status);
}
//Se a clula que o usurio clicou for a do boto Excluir chamo o
//mtodo Excluir, passando como parmetro a linha selecionada + a
//primeira clula, que contm meu ID com o valor formatado, convertido
//para Int32
if (dgvDados.CurrentCell.Value.ToString() == "X")
{
ExcluirRegistro(Convert.ToInt32(dgvDados.CurrentRow.Cells[0].FormattedValue));
}
}

Retorne ao modo design do form frmAlterarExcluirClientes


D um clique no form
Na Janela de Propriedades do formulrio clique no boto Events (Raio)
D um duplo clique sobre o evento Load e digite:
private void frmAlterarExcluirClientes_Load(object sender, EventArgs e)
{
this.clientesTableAdapter.Fill(bibliotecaDS.Clientes);
}

Prof. Mauro Cafe

DEFINIO - EVENTOS

CellMouseClick Captura o clique do mouse do usurio no grid


Load Executa ao carregar o formulrio

Quando o usurio clicar no boto Editar do Grid ser armazenado os dados nas variveis pblicas que
criamos e na sequncia transportado (os dados) para outro formulrio.

Prof. Mauro Cafe

Criando a Tela Alterar dados de Clientes

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmAlterarClientes.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMALTERARCLIENTES FAA:

MinimizeBox para False


StartPosition para CenterScreen
BackColor para 192; 255; 255
Em Text digite Alterar Clientes
Size para 550;360

COLOQUE UM CONTROLE TOOLSTRIP E INCLUA 2 BOTES;


Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Gravar dados e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Gravar dados
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnGravar
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Cancelar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cancelar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCancelar
No ToolStrip
No ToolStrip Tasks mude o Dock para bottom

Prof. Mauro Cafe


Do ToolBox arraste sete labels para o form e altere as seguintes propriedades:
Label1

Label4

Label7

Name: lblCodigo
Text: Cdigo
Font: Arial, Regular e 12
Location: 14; 20
Name: lblCid
Text: Cidade
Font: Arial, Regular e 12
Location: 14; 125

Label2

Label5

Name: lblNome
Text: Nome Completo
Font: Arial, Regular e 12
Location: 14; 55
Name: lblEst
Text: Estado
Font: Arial, Regular e 12
Location: 14; 160

Label3

Label6

Name: lblEnd
Text: Endereo
Font: Arial, Regular e 12
Location: 14; 90
Name: lblTel
Text: Telefone
Font: Arial, Regular e 12
Location: 14; 195

Name: lblStatus
Text: Status
Font: Arial, Regular e 12
Location: 14; 230

Do ToolBox arraste quatro TextBox para o form e altere as seguintes propriedades:


TextBox1
Name: txtCodigo
Size: 115; 21
Location: 142; 21
Modifiers: Public
TabIndex: 1

TextBox2
Name: txtNome
Size: 270;20
Location: 142; 53
Modifiers: Public
TabIndex: 2

TextBox3
Name: txtEnd
Size: 270;20
Location: 142; 88
Modifiers: Public
TabIndex: 3

TextBox4
Name: txtCid
Size: 270;20
Location: 142; 123
Modifiers: Public
TabIndex: 4

Do ToolBox arraste um comboBox para o form e altere as seguintes propriedades:

Name: cboEstado

Size: 115;20

Location: 142; 156


Modifiers: Public
TabIndex: 5

Em Items digite um embaixo do outro:


AC AL AP AM BA CE DF ES GO MA MT
MS MG PA PB PR PE PI RJ RN RS RO
RR SC SP SE TO

Prof. Mauro Cafe


Do ToolBox arraste um MaskedTextBox para o form e altere as seguintes propriedades:
Name: txtTelefone
Size: 115;20
Location: 142; 192
Modifiers: Public
TabIndex: 6
No MaskedTextBox Tasks
Escolha Set Mask
Na Janela Input Mask escolha a opo Phone number
Em Mask altere para: (99) 0000-0000
Ok
Obs.: MaskedTextBox uma caixa de texto com mscara de entrada. Serve para facilitar a digitao e
determinar o que valido e o que no na digitao. No caso da mscara Phone Number no ser
necessrio digitar os parnteses e nem o hfen e s ser permitido a digitao de dados numricos sendo os
dois primeiros opcionais e os oitos ltimos obrigatrios. Cada 9 representa um dgito numrico opcional e
cada 0 um digito numrico obrigatrio.
Do ToolBox arraste dois RadioButton para o form e altere as seguintes propriedades:
radioButton1
Name: rdbAtivo
Text: Ativo
Font: Arial, Regular e 12
Checked: True
Location: 142; 230
Modifiers: Public
TabIndex: 7

Ficar assim:

radioButton2
Name: rdbInativo
Text: Inativo
Font: Arial, Regular e 12
Location: 223; 230
Modifiers: Public
TabIndex: 8

Prof. Mauro Cafe


RETORNE AO FORMULRIO FRMALTERAREXCLUIRCLIENTES.CS

Aperte a tecla F7 para ir pgina de cdigos.


Acrescente o mtodo EditarRegistro: (Depois de: private void dgvDados_CellMouseClick...)

private void EditarRegistro(int codigo, string nome, string endereco, string


cidade, string estado, string telefone, string status)
{
//Instancio o frmAlterar e atribuo ao valor de suas variveis
//o valor das variveis pertencentes a assinatura deste mtodo
//e abro o form, por meio do mtodo ShowDialog
frmAlterarClientes objFrmAlterarClientes = new frmAlterarClientes();
objFrmAlterarClientes.txtCodigo.Text = Convert.ToString(codigo);
objFrmAlterarClientes.txtNome.Text = nome;
objFrmAlterarClientes.txtEnd.Text = endereco;
objFrmAlterarClientes.txtCid.Text = cidade;
objFrmAlterarClientes.cboEstado.Text = estado;
objFrmAlterarClientes.txtTelefone.Text = telefone;
if (status == "A")
objFrmAlterarClientes.rdbAtivo.Checked = true;
else
objFrmAlterarClientes.rdbInativo.Checked = true;
objFrmAlterarClientes.ShowDialog();
this.clientesTableAdapter.Fill(bibliotecaDS.Clientes);
}

Acrescente o mtodo ExcluirRegistro: (Depois de: private void EditarRegistro)

private void ExcluirRegistro(int codigo)


{
//Se o usurio confirmar a excluso, crio a conexo com
//o banco e excluo o respectivo registro
if (MessageBox.Show("Tem certeza que deseja excluir o registro?",
"Mensagem do Sistema", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
try
{
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"DELETE FROM Clientes WHERE ID_CLIENTE = @Codigo";
SqlCommand objCommand = new SqlCommand(strConn, objConexao);
objCommand.Parameters.AddWithValue("@Codigo", codigo);
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Registro excludo com sucesso!", "Mensagem",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.clientesTableAdapter.Fill(bibliotecaDS.Clientes);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}

Prof. Mauro Cafe


RETORNE AO FORMULRIO FRMALTERARCLIENTES.CS

Retorne ao modo Design


D um duplo clique sobre o boto Cancelar
No mtodo btnCancelar_Click faa:
private void btnCancelar_Click(object sender, EventArgs e)
{
this.Close();
}

Retorne ao modo Design do form frmAlterarClientes

Do ToolBox arraste um ErrorProvider para o form e altere as seguintes propriedades:


errorProvider1
Name: epErro
BlinkStyle para: NeverBLink

De:

Para:

D um duplo clique sobre o boto Gravar dados.


Surgindo a tela de cdigo declare:

No mtodo btnGravar_Click acrescente o cdigo a seguir:

private void btnGravar_Click(object sender, EventArgs e)


{
AlterarDados();
}

Aps este mtodo crie a funo AlterarDados():

Prof. Mauro Cafe


private void AlterarDados()
{
bool camposValidos = false;
try
{
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"UPDATE CLIENTES SET Nome_Cliente = @Nome,
Endereco_Cliente = @Endereco, Cidade_Cliente = @Cidade, Estado_Cliente =
@Estado, Telefone_Cliente = @Telefone, Status_Cliente = @Status WHERE
Id_Cliente = " + Convert.ToUInt32(txtCodigo.Text);
SqlCommand objCommand = new SqlCommand(strConn, objConexao);
#region Validaes dos Campos

if (!String.IsNullOrEmpty(txtNome.Text)) {
objCommand.Parameters.AddWithValue("@Nome", txtNome.Text);
camposValidos = true;
epErro.SetError(txtNome, null);
}
else {
epErro.SetError(txtNome, "O campo nome obrigatrio");
camposValidos = false;
}
if (!String.IsNullOrEmpty(txtEnd.Text)) {
objCommand.Parameters.AddWithValue("@Endereco", txtEnd.Text);
camposValidos = true;
epErro.SetError(txtEnd, null);
}
else {
epErro.SetError(txtEnd, "O campo endereo obrigatrio");
camposValidos = false;
}
if (!String.IsNullOrEmpty(txtCid.Text)) {
objCommand.Parameters.AddWithValue("@Cidade", txtCid.Text);
camposValidos = true;
epErro.SetError(txtCid, null);
}
else {
epErro.SetError(txtCid, "O campo nome obrigatrio");
camposValidos = false;
}
if (rdbAtivo.Checked) {
objCommand.Parameters.AddWithValue("@Status", "A");
camposValidos = true;
}
else {
objCommand.Parameters.AddWithValue("@Status", "I");
camposValidos = true;
}
if (!String.IsNullOrEmpty(txtTelefone.Text)) {
objCommand.Parameters.AddWithValue("@Telefone", txtTelefone.Text);
camposValidos = true;
}

Prof. Mauro Cafe


if (cboEstado.SelectedIndex > -1) {
objCommand.Parameters.AddWithValue("@Estado", cboEstado.SelectedItem);
camposValidos = true;
epErro.SetError(cboEstado, null);
}
else {
epErro.SetError(cboEstado, "O campo Estado obrigatrio!");
camposValidos = false;
}
#endregion
if (camposValidos) {
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Registro alterado com sucesso!",
"Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
else {
MessageBox.Show("Ops, ocorreram erros!\n\nPreencha os
campos e tente novamente", "Mensagem", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Prof. Mauro Cafe

Tela de Alterar / Excluir Livros

Abra a o formulrio frmAlterarExcluirLivros.cs

Ao criar o frmAlterarExcluirLivros foi dito para adicionar colunas referentes aos campos no dataGrid, na
verdade no precisaremos deles. Vamos exclu-los e deixar apenas os botes Editar e Excluir.

Clique no DataGridView
Abra o DataGridView Tasks e Edit Columns
Exclua todas as colunas, menos os botes Editar e Excluir.
Ok

Abra o DataGridView Tasks do DataGridView.

Em Choose Data Source escolha a fonte de dados do DataGridView;


Clique em Other Data Sources
Clique em Project Data Sources
Clique em BibliotecDS
Clique em Livros como mostra a imagem:

Finalizando o layout de nosso DataGridView, clique novamente em Edit Columns, altere o nome das
colunas na propriedade Header Text, e altere para False a propriedade Visible da coluna Id_Livro.

Prof. Mauro Cafe


De:

Para:

Abra novamente o DataGridView Tasks do DataGridView.


Clique na opo Edit Columns

Clique no boto Editar


o Na Propriedade Text digite: >
o Na Propriedade HeaderText deixe vazio
o Na Propriedade Width digite: 20
o Na Propriedade UseColumnTextForButtonValue coloque True
o Na Propriedade Name digite: Editar

Clique no boto Excluir


o Na Propriedade Text digite: X
o Na Propriedade HeaderText deixe vazio
o Na Propriedade Width digite: 20
o Na Propriedade UseColumnTextForButtonValue coloque True
o Na Propriedade Name digite: Excluir

Movimente estes dois botes para o Final


Ok

DEFINIO - PROPRIEDADES

UseColumnTextForButtonValue Para que sejam exibidos o nome dos botes no Grid


Text - Ser a descrio do boto
HeaderText Descrio da coluna correspondente
Width Largura do boto
Name - Nome do objeto

V pgina de cdigos e crie as variveis abaixo, que sero pblicas em nossa pgina, responsveis por
armazenar os valores de cada clula referente linha selecionada no grid:

Aperte a tecla F7 para ir janela de cdigo


Declare as variveis conforme mostra a seguir:

Prof. Mauro Cafe

Retorne ao modo design do form frmAlterarExcluirLivros


D um clique no DataGridView
Na Janela de Propriedades clique no boto Events (Raio)
D um duplo clique sobre o evento CellMouseClick e digite:

private void dgvDados_CellMouseClick(object sender,


DataGridViewCellMouseEventArgs e)
{
//Se a clula que o usurio clicou for a do boto Editar atribuo
//para as variveis publicas o valor de cada clula do Grid, referente
//ao respectivo registro
if (dgvDados.CurrentCell.Value.ToString() == ">")
{
//Passo o ID do registro que ser til em meu UPDATE no outro form
codigo = Convert.ToInt32(dgvDados.CurrentRow.Cells[0].FormattedValue);
nome = dgvDados.CurrentRow.Cells[1].FormattedValue.ToString();
autor = dgvDados.CurrentRow.Cells[2].FormattedValue.ToString();
ano = Convert.ToInt32(dgvDados.CurrentRow.Cells[3].FormattedValue.ToString());
genero = dgvDados.CurrentRow.Cells[4].FormattedValue.ToString();
editora = dgvDados.CurrentRow.Cells[5].FormattedValue.ToString();
paginas =
Convert.ToInt32(dgvDados.CurrentRow.Cells[6].FormattedValue.ToString());
status = dgvDados.CurrentRow.Cells[7].FormattedValue.ToString();
//Chamo o mtodo Editar, passando as variveis como parmetros
EditarRegistro(codigo, nome, autor, ano, genero, editora, paginas, status);
}
//Se a clula que o usurio clicou for a do boto Excluir chamo o
//mtodo Excluir, passando como parmetro a linha selecionada + a
//primeira clula, que contm meu ID com o valor formatado, convertido
//para Int32
if (dgvDados.CurrentCell.Value.ToString() == "X")
{
ExcluirRegistro(Convert.ToInt32(dgvDados.CurrentRow.Cells[0].FormattedValue));
}
}

DEFINIO - EVENTOS

CellMouseClick Captura o clique do mouse do usurio no grid

Quando o usurio clicar no boto Editar do Grid ser armazenado os dados nas variveis pblicas que
criamos e na sequncia transportado (os dados) para outro formulrio.

Prof. Mauro Cafe

Criando a Tela Alterar dados de Livros

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmAlterarLivros.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMALTERARCLIENTES FAA:

MinimizeBox para False


StartPosition para CenterScreen
BackColor para 192; 255; 192
Em Text digite Alterar Livros
Size para 550;360

COLOQUE UM CONTROLE TOOLSTRIP E INCLUA 2 BOTES;


Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Gravar dados e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Gravar dados
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnGravar
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Cancelar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cancelar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCancelar
No ToolStrip
No ToolStrip Tasks mude o Dock para bottom

Prof. Mauro Cafe


Do ToolBox arraste oito labels para o form e altere as seguintes propriedades:
Label1

Label4

Label7

Name: lblCodigo
Text: Cdigo
Font: Arial, Regular e 12
Location: 14; 20
Name: lblAno
Text: Ano
Font: Arial, Regular e 12
Location: 14; 125
Name: lblPaginas
Text: Pginas
Font: Arial, Regular e 12
Location: 273; 125

Label2

Label5

Label8

Name: lblNome
Text: Nome do Livro
Font: Arial, Regular e 12
Location: 14; 55
Name: lblGenero
Text: Gnero
Font: Arial, Regular e 12
Location: 14; 160

Label3

Label6

Name: lblAutor
Text: Autor
Font: Arial, Regular e 12
Location: 14; 90
Name: lblEditora
Text: Editora
Font: Arial, Regular e 12
Location: 14; 195

Name: lblStatus
Text: Status
Font: Arial, Regular e 12
Location: 14; 230

Do ToolBox arraste cinco TextBox para o form e altere as seguintes propriedades:


TextBox1
Name: txtCodigo
Size: 115; 21
Location: 142; 21
Modifiers: Public
TabIndex: 1

TextBox2
Name: txtNome
Size: 325; 20
Location: 142; 53
Modifiers: Public
TabIndex: 2

TextBox4
Name: txtGenero
Size: 325; 20
Location: 142; 158
Modifiers: Public
TabIndex: 6

TextBox5
Name: txtEditora
Size: 325; 20
Location: 142; 193
Modifiers: Public
TabIndex: 7

TextBox3
Name: txtAutor
Size: 325; 20
Location: 142; 88
Modifiers: Public
TabIndex: 3

Do ToolBox arraste um MaskedTextBox para o form e altere as seguintes propriedades:


Name: txtAno
Size: 115;20
Location: 142; 123
Modifiers: Public
TabIndex: 4
No MaskedTextBox Tasks
Escolha Set Mask
Na Janela Input Mask escolha a opo Numeric
Em Mask altere para: 0000
Ok

Prof. Mauro Cafe

Do ToolBox arraste dois RadioButton para o form e altere as seguintes propriedades:


radioButton1
Name: rdbDisponivel
Text: Disponvel
Font: Arial, Regular e 12
Checked: True
Location: 142; 226
Modifiers: Public
TabIndex: 8

radioButton2
Name: rdbIndisponivel
Text: Indisponvel
Font: Arial, Regular e 12
Location: 259; 226
Modifiers: Public
TabIndex: 9

Do ToolBox arraste um NumericUpDown para o form e altere as seguintes propriedades:


NumericUpDown 1
Name: txtPaginas
Size: 120; 20
Location: 345; 123
Maximum: 1000
Minimum: 0
TabIndex: 5
Modifiers: Public

Ficar assim:

Prof. Mauro Cafe


RETORNE AO FORMULRIO FRMALTERAREXCLUIRLIVROS.CS

Aperte a tecla F7 para ir pgina de cdigos.


Acrescente o mtodo EditarRegistro: (Depois de: private void dgvDados_CellMouseClick...)

private void EditarRegistro(int codigo, string nome, string autor, int ano,
string genero, string editora, int paginas, string status)
{
//Instancio o frmAlterar e atribuo ao valor de suas variveis
//o valor das variveis pertencentes a assinatura deste mtodo e
//abro o form, por meio do mtodo ShowDialog
frmAlterarLivros objFrmAlterarLivros = new frmAlterarLivros();
objFrmAlterarLivros.txtCodigo.Text = Convert.ToString(codigo);
objFrmAlterarLivros.txtNome.Text = nome;
objFrmAlterarLivros.txtAutor.Text = autor;
objFrmAlterarLivros.txtAno.Text = Convert.ToString(ano);
objFrmAlterarLivros.txtGenero.Text = genero;
objFrmAlterarLivros.txtEditora.Text = editora;
objFrmAlterarLivros.txtPaginas.Text = Convert.ToString(paginas);
if (status == "D")
objFrmAlterarLivros.rdbDisponivel.Checked = true;
else
objFrmAlterarLivros.rdbIndisponivel.Checked = true;
objFrmAlterarLivros.ShowDialog();
this.livrosTableAdapter.Fill(bibliotecaDS.Livros);
}

Declare no topo

using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;

Acrescente o mtodo ExcluirRegistro: (Depois de: private void EditarRegistro)

private void ExcluirRegistro(int codigo)


{
//Se o usurio confirmar a excluso, crio a conexo com o banco
//e excluo o respectivo registro
if (MessageBox.Show("Tem certeza que deseja excluir o registro?",
"Mensagem do Sistema",MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes) {
try
{
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"DELETE FROM Livros WHERE ID_Livro = @Codigo";
SqlCommand objCommand = new SqlCommand(strConn, objConexao);
objCommand.Parameters.AddWithValue("@Codigo", codigo);
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Livro excludo com sucesso!", "Mensagem",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.livrosTableAdapter.Fill(bibliotecaDS.Livros);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
}

Prof. Mauro Cafe


RETORNE AO FORMULRIO FRMALTERARLIVROS.CS

Retorne ao modo Design


D um duplo clique sobre o boto Cancelar
No mtodo btnCancelar_Click faa:
private void btnCancelar_Click(object sender, EventArgs e)
{
this.Close();
}

Retorne ao modo Design do form frmAlterarLivros

Do ToolBox arraste um ErrorProvider para o form e altere as seguintes propriedades:


errorProvider1
Name: epErro
BlinkStyle para: NeverBLink

D um duplo clique sobre o boto Gravar dados.


Surgindo a tela de cdigo declare:

No mtodo btnGravar_Click acrescente o cdigo a seguir:

private void btnGravar_Click(object sender, EventArgs e)


{
AlterarDados();
}

Aps este mtodo crie a funo AlterarDados():


private void AlterarDados()
{
bool camposValidos = false;
try {
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"UPDATE LIVROS SET Nome_Livro = @Nome, Autor_Livro =
@Autor, Ano_Livro = @Ano, Genero_Livro = @Genero, Editora_Livro = @Editora,
Paginas_Livro = @Paginas, Status_Livro = @Status WHERE Id_Livro = " +
Convert.ToUInt32(txtCodigo.Text);
SqlCommand objCommand = new SqlCommand(strConn, objConexao);

Prof. Mauro Cafe


#region Validaes dos Campos
//Nome do Livro
if (!String.IsNullOrEmpty(txtNome.Text)) {
objCommand.Parameters.AddWithValue("@Nome", txtNome.Text);
camposValidos = true;
epErro.SetError(txtNome, null);
}
else {
epErro.SetError(txtNome, "O campo nome obrigatrio");
camposValidos = false;
}
//Autor
if (!String.IsNullOrEmpty(txtAutor.Text)) {
objCommand.Parameters.AddWithValue("@Autor", txtAutor.Text);
camposValidos = true;
epErro.SetError(txtAutor, null);
}
else{
epErro.SetError(txtAutor, "O campo Autor obrigatrio");
camposValidos = false;
}
//Ano
if (!String.IsNullOrEmpty(txtAno.Text)) {
objCommand.Parameters.AddWithValue("@Ano", txtAno.Text);
camposValidos = true;
epErro.SetError(txtAno, null);
}
else{
epErro.SetError(txtAno, "O campo Ano obrigatrio");
camposValidos = false;
}
//Genero
if (!String.IsNullOrEmpty(txtGenero.Text)) {
objCommand.Parameters.AddWithValue("@Genero", txtGenero.Text);
camposValidos = true;
epErro.SetError(txtGenero, null);
}
else {
epErro.SetError(txtGenero, "O campo Gnero obrigatrio");
camposValidos = false;
}
//Editora
if (!String.IsNullOrEmpty(txtEditora.Text)) {
objCommand.Parameters.AddWithValue("@Editora", txtEditora.Text);
camposValidos = true;
epErro.SetError(txtEditora, null);
}
else {
epErro.SetError(txtEditora, "O campo Editora obrigatrio");
camposValidos = false;
}
//Status
if (rdbDisponivel.Checked) {
objCommand.Parameters.AddWithValue("@Status", "D");
camposValidos = true;
}

Prof. Mauro Cafe


else {
objCommand.Parameters.AddWithValue("@Status", "I");
camposValidos = true;
}
//Paginas
if (!String.IsNullOrEmpty(txtPaginas.Text)) {
objCommand.Parameters.AddWithValue("@Paginas", txtPaginas.Text);
camposValidos = true;
}
#endregion
if (camposValidos) {
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Livro alterado com sucesso!", "Mensagem",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
else{
MessageBox.Show("Ops, ocorreram erros!\n\nPreencha os campos
e tente novamente", "Mensagem", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
}

Prof. Mauro Cafe

Tela de Alterar / Excluir Funcionrios

Abra a o formulrio frmAlterarExcluirFuncionarios.cs

Ao criar o frmAlterarExcluirFuncionarios foi dito para adicionar colunas referentes aos campos no
dataGrid, na verdade no precisaremos deles. Vamos exclu-los e deixar apenas os botes Editar e Excluir.

Clique no DataGridView
Abra o DataGridView Tasks e Edit Columns
Exclua todas as colunas, menos os botes Editar e Excluir.
Ok

Abra o DataGridView Tasks do DataGridView.

Em Choose Data Source escolha a fonte de dados do DataGridView;


Clique em Other Data Sources
Clique em Project Data Sources
Clique em BibliotecDS
Clique em Funcionarios como mostra a imagem:

Finalizando o layout de nosso DataGridView, clique novamente em Edit Columns, altere o nome das
colunas na propriedade Header Text, e altere para False a propriedade Visible da coluna Id_Funcionario.

Prof. Mauro Cafe


De:

Para:

Abra novamente o DataGridView Tasks do DataGridView.


Clique na opo Edit Columns

Clique no boto Editar


o Na Propriedade Text digite: >
o Na Propriedade HeaderText deixe vazio
o Na Propriedade Width digite: 20
o Na Propriedade UseColumnTextForButtonValue coloque True
o Na Propriedade Name digite: Editar

Clique no boto Excluir


o Na Propriedade Text digite: X
o Na Propriedade HeaderText deixe vazio
o Na Propriedade Width digite: 20
o Na Propriedade UseColumnTextForButtonValue coloque True
o Na Propriedade Name digite: Excluir

Movimente estes dois botes para o Final


Ok

DEFINIO - PROPRIEDADES

UseColumnTextForButtonValue Para que sejam exibidos o nome dos botes no Grid


Text - Ser a descrio do boto
HeaderText Descrio da coluna correspondente
Width Largura do boto

V pgina de cdigos e crie as variveis abaixo, que sero pblicas em nossa pgina, responsveis por
armazenar os valores de cada clula referente linha selecionada no grid:

Aperte a tecla F7 para ir janela de cdigo


Declare as variveis conforme mostra a seguir:

Prof. Mauro Cafe

Retorne ao modo design do form frmAlterarExcluirFuncionarios


D um clique no DataGridView
Na Janela de Propriedades clique no boto Events (Raio)
D um duplo clique sobre o evento CellMouseClick e digite:

private void dgvDados_CellMouseClick(object sender,


DataGridViewCellMouseEventArgs e)
{
//Se a clula que o usurio clicou for a do boto Editar atribuo
//para as variveis publicas o valor de cada clula do Grid,
//referente ao respectivo registro
if (dgvDados.CurrentCell.Value.ToString() == ">")
{
//Passo o ID do registro que ser til em meu UPDATE no outro form
codigo = Convert.ToInt32(dgvDados.CurrentRow.Cells[0].FormattedValue);
nome = dgvDados.CurrentRow.Cells[1].FormattedValue.ToString();
endereco = dgvDados.CurrentRow.Cells[2].FormattedValue.ToString();
cidade = dgvDados.CurrentRow.Cells[3].FormattedValue.ToString();
estado = dgvDados.CurrentRow.Cells[4].FormattedValue.ToString();
telefone = dgvDados.CurrentRow.Cells[5].FormattedValue.ToString();
cargo = dgvDados.CurrentRow.Cells[6].FormattedValue.ToString();
dataAdm = dgvDados.CurrentRow.Cells[7].FormattedValue.ToString();
dataDem = dgvDados.CurrentRow.Cells[8].FormattedValue.ToString();
//Chamo o mtodo Editar, passando as variveis como parmetros
EditarRegistro(codigo, nome, endereco, cidade, estado, telefone,
cargo, dataAdm, dataDem);
}
//Se a clula que o usurio clicou for a do boto Excluir chamo o
//mtodo Excluir, passando como parmetro a linha selecionada + a
//primeira clula, que contm meu ID com o valor formatado, convertido
//para Int32
if (dgvDados.CurrentCell.Value.ToString() == "X")
{
ExcluirRegistro(Convert.ToInt32(dgvDados.CurrentRow.Cells[0].FormattedValue));
}
}

Quando o usurio clicar no boto Editar do Grid ser armazenado os dados nas variveis pblicas que
criamos e na sequncia transportado (os dados) para outro formulrio.

Prof. Mauro Cafe

Criando a Tela Alterar dados de Funcionrios

Abra a Solution Explorer e clique com o boto direito sobre o nome do seu projeto
Clique em Add > Windows Forms e d o nome de frmAlterarFuncionarios.cs
Clique no boto Add

NA JANELA DE PROPRIEDADES DO FRMALTERARFUNCIONARIOS FAA:

MinimizeBox para False


StartPosition para CenterScreen
BackColor para 255; 224; 192
Em Text digite Alterar Funcionrios
Size para 550;360

COLOQUE UM CONTROLE TOOLSTRIP E INCLUA 2 BOTES;


Primeiro Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Gravar dados e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Gravar dados
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnGravar
Segundo Button
Clique com o boto direito sobre o button e Set Image.
Escolha a imagem referente a Cancelar e Ok.
Clique com o boto direito sobre o button e DisplayStyle / Image and Text.
Posicione sobre a propriedade Text e escreva: Cancelar
Posicione sobre a propriedade ImageScalling e escolha None
Posicione sobre a propriedade Name e escreva: btnCancelar
No ToolStrip
No ToolStrip Tasks mude o Dock para bottom

Prof. Mauro Cafe


Do ToolBox arraste nove labels para o form e altere as seguintes propriedades:
Label1

Label4

Label7

Name: lblCodigo
Text: Cdigo
Font: Arial, Regular e 12
Location: 14; 20
Name: lblCid
Text: Cidade
Font: Arial, Regular e 12
Location: 14; 125
Name: lblCargo
Text: Cargo
Font: Arial, Regular e 12
Location: 14; 230

Label2

Label5

Label8

Name: lblNome
Text: Nome do Livro
Font: Arial, Regular e 12
Location: 14; 55
Name: lblEstado
Text: Estado
Font: Arial, Regular e 12
Location: 14; 160
Name: lblDataAdm
Text: Data Admisso
Font: Arial, Regular e 12
Location: 273; 160

Label3

Label6

Label9

Name: lblEnd
Text: Endereo
Font: Arial, Regular e 12
Location: 14; 90
Name: lblTelefone
Text: Telefone
Font: Arial, Regular e 12
Location: 14; 195
Name: lblDataDem
Text: Data Demisso
Font: Arial, Regular e 12
Location: 273; 195

Do ToolBox arraste cinco TextBox para o form e altere as seguintes propriedades:


TextBox1
Name: txtCodigo
Size: 115; 21
Location: 144; 18
Modifiers: Public
TabIndex: 1

TextBox2
Name: txtNome
Size: 352; 20
Location: 142; 53
Modifiers: Public
TabIndex: 2

TextBox4
Name: txtCid
Size: 352; 20
Location: 142; 158
Modifiers: Public
TabIndex: 4

TextBox5
Name: txtCargo
Size: 352; 20
Location: 142; 193
Modifiers: Public
TabIndex: 7

TextBox3
Name: txtEnd
Size: 352; 20
Location: 142; 88
Modifiers: Public
TabIndex: 3

Prof. Mauro Cafe


Do ToolBox arraste um comboBox para o form e altere as seguintes propriedades:

Name: cboEstado

Size: 115;20

Location: 144; 157


Modifiers: Public
TabIndex: 5

Em Items digite um embaixo do outro:


AC AL AP AM BA CE DF ES GO MA MT
MS MG PA PB PR PE PI RJ RN RS RO
RR SC SP SE TO

Do ToolBox arraste trs MaskedTextBox para o form e altere as seguintes propriedades:


MaskedTextBox1
Name: txtTelefone
Size: 115;20
Location: 144; 192
Modifiers: Public
TabIndex: 6

MaskedTextBox2
Name: txtDataAdm
Size: 100;20
Location: 396; 157
Modifiers: Public
TabIndex: 8

MaskedTextBox3
Name: txtDataDem
Size: 100;20
Location: 396; 192
Modifiers: Public
TabIndex: 9

No MaskedTextBox Tasks
Escolha Set Mask
Na Janela Input Mask
escolha a opo Phone
Number
Em Mask altere para:
(99) 0000-0000
Ok

No MaskedTextBox Tasks
Escolha Set Mask
Na Janela Input Mask
escolha a opo short Date
Em Mask altere para:
00/00/00
Ok

No MaskedTextBox Tasks
Escolha Set Mask
Na Janela Input Mask
escolha a opo short Date
Em Mask altere para:
00/00/00
Ok

Ficar assim:

Prof. Mauro Cafe


RETORNE AO FORMULRIO FRMALTERAREXCLUIRFUNCIONARIOS.CS

Aperte a tecla F7 para ir pgina de cdigos.


Acrescente o mtodo EditarRegistro: (Depois de: private void dgvDados_CellMouseClick...)

private void EditarRegistro(int codigo, string nome, string endereco, string


cidade, string estado, string telefone, string cargo, string dataAdm, string
daraDem)
{
//Instancio o frmAlterar e atribuo ao valor de suas variveis o
//valor das variveis pertencentes a assinatura deste mtodo e abro
//o form, por meio do mtodo ShowDialog
frmAlterarFuncionarios objFrmAlterarFucnionarios = new frmAlterarFuncionarios();
objFrmAlterarFucnionarios.txtCodigo.Text = Convert.ToString(codigo);
objFrmAlterarFucnionarios.txtNome.Text = nome;
objFrmAlterarFucnionarios.txtEnd.Text = endereco;
objFrmAlterarFucnionarios.txtCid.Text = cidade;
objFrmAlterarFucnionarios.cboEstado.Text = estado;
objFrmAlterarFucnionarios.txtTelefone.Text = telefone;
objFrmAlterarFucnionarios.txtCargo.Text = cargo;
objFrmAlterarFucnionarios.txtDataAdm.Text = dataAdm;
objFrmAlterarFucnionarios.txtDataDem.Text = dataDem;
objFrmAlterarFucnionarios.ShowDialog();
this.funcionariosTableAdapter.Fill(bibliotecaDS.Funcionarios);
}

Declare no topo

using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;

Acrescente o mtodo ExcluirRegistro: (Depois de: private void EditarRegistro)

private void ExcluirRegistro(int codigo)


{
//Se o usurio confirmar a excluso, crio a conexo com o banco e
//excluo o respectivo registro
if (MessageBox.Show("Tem certeza que deseja excluir o registro?",
"Mensagem do Sistema", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== DialogResult.Yes)
{
try {
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"DELETE FROM Funcionarios WHERE ID_FUNCIONARIO = @Codigo";
SqlCommand objCommand = new SqlCommand(strConn, objConexao);
objCommand.Parameters.AddWithValue("@Codigo", codigo);
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Registro excludo com sucesso!", "Mensagem",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.funcionariosTableAdapter.Fill(bibliotecaDS.Funcionarios);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
}

Prof. Mauro Cafe


RETORNE AO FORMULRIO FRMALTERARFUNCIONARIOS.CS

Retorne ao modo Design


D um duplo clique sobre o boto Cancelar
No mtodo btnCancelar_Click faa:
private void btnCancelar_Click(object sender, EventArgs e)
{
this.Close();
}

Retorne ao modo Design do form frmAlterarFuncionarios

Do ToolBox arraste um ErrorProvider para o form e altere as seguintes propriedades:


errorProvider1
Name: epErro
BlinkStyle para: NeverBLink

D um duplo clique sobre o boto Gravar dados.


Surgindo a tela de cdigo declare:

No mtodo btnGravar_Click acrescente o cdigo a seguir:

private void btnGravar_Click(object sender, EventArgs e)


{
AlterarDados();
}

Aps este mtodo crie a funo AlterarDados():


private void AlterarDados()
{
bool camposValidos = false;
try {
SqlConnection objConexao = new SqlConnection(@"");
string strConn = @"UPDATE FUNCIONARIOS SET Nome_Funcionario = @Nome,
Endereco_Funcionario = @Endereco, Cidade_Funcionario = @Cidade,
Estado_Funcionario = @Estado, Telefone_Funcionario = @Telefone,
Cargo_Funcionario = @Cargo, Data_Admissao_Funcionario = @DataAdm,
Data_Demissao_Funcionario = @DataDem WHERE Id_Funcionario = " +
Convert.ToUInt32(txtCodigo.Text);

Prof. Mauro Cafe


SqlCommand objCommand = new SqlCommand(strConn, objConexao);
#region Validaes dos Campos
//Nome do Fubncinario
if (!String.IsNullOrEmpty(txtNome.Text)) {
objCommand.Parameters.AddWithValue("@Nome", txtNome.Text);
camposValidos = true;
epErro.SetError(txtNome, null);
}
else {
epErro.SetError(txtNome, "O campo nome obrigatrio");
camposValidos = false;
}
//Endereco
if (!String.IsNullOrEmpty(txtEnd.Text)) {
objCommand.Parameters.AddWithValue("@Endereco", txtEnd.Text);
camposValidos = true;
epErro.SetError(txtEnd, null);
}
else {
epErro.SetError(txtEnd, "O campo Endereo obrigatrio");
camposValidos = false;
}
//Cidade
if (!String.IsNullOrEmpty(txtCid.Text)) {
objCommand.Parameters.AddWithValue("@Cidade", txtCid.Text);
camposValidos = true;
epErro.SetError(txtCid, null);
}
else {
epErro.SetError(txtCid, "O campo Cidade obrigatrio");
camposValidos = false;
}
if (cboEstado.SelectedIndex > -1) {
objCommand.Parameters.AddWithValue("@Estado", cboEstado.SelectedItem);
camposValidos = true;
epErro.SetError(cboEstado, null);
}
else {
epErro.SetError(cboEstado, "O campo Estado obrigatrio!");
camposValidos = false;
}
//Telefone
if (!String.IsNullOrEmpty(txtTelefone.Text)) {
objCommand.Parameters.AddWithValue("@Telefone", txtTelefone.Text);
camposValidos = true;
}
//Cargo
if (!String.IsNullOrEmpty(txtCargo.Text)) {
objCommand.Parameters.AddWithValue("@Cargo", txtCargo.Text);
camposValidos = true;
epErro.SetError(txtCargo, null);
}
else {
epErro.SetError(txtCargo, "O campo Cargo obrigatrio");
camposValidos = false;
}

Prof. Mauro Cafe


//Data de Admisso do Funcionrio
if (IsDate(txtDataAdm.Text)) {
objCommand.Parameters.AddWithValue("@DataAdm", txtDataAdm.Text);
camposValidos = true;
epErro.SetError(txtDataAdm, null);
}
else {
epErro.SetError(txtDataAdm, "O campo Data de Admisso obrigatrio");
camposValidos = false;
}
//Data de Demisso do Funcionrio
if (IsDate(txtDataDem.Text)) {
objCommand.Parameters.AddWithValue("@DataDem", txtDataDem.Text);
camposValidos = true;
epErro.SetError(txtDataDem, null);
}
else
//DBNull.Value faz com que o parametro seja nulo. Se no fizer
//assim ele considera a mscara de entrada e tentar grav-lo.
//Como no date dar erro.
objCommand.Parameters.AddWithValue("@DataDem", DBNull.Value);
#endregion
if (camposValidos) {
objConexao.Open();
objCommand.ExecuteNonQuery();
objConexao.Close();
MessageBox.Show("Funcionrio alterado com sucesso!", "Mensagem",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
else
{
MessageBox.Show("Ops, ocorreram erros!\n\nPreencha os campos e
tente novamente", "Mensagem", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Aps este mtodo crie o mtodo IsDate():


//Estamos criando esta funo por ela no existir no csharp.
//Esta funo recebe um valor do tipo string.
//Se o valor recebido pela funao for data ento retorna true
//seno false.
private bool IsDate(string inputDate)
{
DateTime Temp;
if (DateTime.TryParse(inputDate, out Temp) == true) return true;
else return false;
}