Você está na página 1de 11

Fábio Camara

Dominando o Visual
Studio .NET com C#
2a Edição Atualizada e Ampliada

Visual Books
Sumário

Prefácio.................................................................... XIII

1 Introdução ................................................................. 1
1.1 Quem Deve Ler este Livro? ..................................................... 1
1.2 Visão Geral do Conteúdo ........................................................ 1
1.3 Código de Exemplo ............................................................... 2

2 Começando... ............................................................ 3
2.1 Versões do Visual Studio .NET .................................................. 5
2.1.1 Visual Studio .NET Professional .............................................. 5
2.1.2 Visual Studio .NET Enterprise Developer ................................... 5
2.1.3 Visual Studio .NET Enterprise Architect .................................... 5
2.2 Comparação entre as Versões .................................................. 6
2.3 Visual Studio .NET – A Ferramenta IDE ....................................... 10
2.4 Requerimentos para a Plataforma .NET ...................................... 11
2.5 NET Framework - Redistribuição .............................................. 11

3 Tendo a Programação como Profissão ............................. 13


3.1 Lógica de Programação ......................................................... 15
3.1.1 Seqüência Lógica e Instruções .............................................. 15
3.1.2 Algoritmo ....................................................................... 16
3.2 Programação para Windows ................................................... 17
3.2.1 Interface Windows ............................................................ 18
3.3 Dica para Aprender Novas Linguagens ....................................... 19

4 Conhecendo o Visual Studio .NET.................................. 21


4.1 Gerenciando o Ambiente de Desenvolvimento .............................. 21
4.2 Conhecendo as Janelas do Ambiente de Desenvolvimento ................ 24
4.2.1 Janela Solution Explorer ..................................................... 24
4.2.2 Janela ToolBox ................................................................. 25
4.2.3 Janela Properties ............................................................. 26
4.2.4 Janela OutPut ................................................................. 27
4.2.5 Janela Object Browser ....................................................... 27
4.2.6 Janela Class View ............................................................. 28
4.2.7 Janela Web Browser .......................................................... 29
4.2.8 Janela Favorites .............................................................. 30
4.2.9 Janela Server Explorer ....................................................... 30
4.3 Macro Explorer ................................................................... 31
4.4 Task List .......................................................................... 31
4.5 Command Window .............................................................. 32
4.6 Atalhos da IDE ................................................................... 32
4.6.1 Comentários ................................................................... 33
4.6.2 Atalho para Tarefas ........................................................... 33
4.6.3 Abrindo/Fechando Blocos de Código ....................................... 33
4.6.4 Linhas de Código ............................................................. 34
4.6.5 Encontrando o Final do Método ............................................. 34
4.6.6 Informações de Parâmetro .................................................. 34
4.7 Criando Aplicações Baseadas em Templates ................................. 35
4.8 Ocultamento do Texto .......................................................... 36
4.9 IntelliSense ....................................................................... 37
4.10 Obtendo Ajuda ................................................................. 38
4.11 Personalizando o Text Editor ................................................. 39

5 Trabalhando com o Visual Studio .NET ............................ 43


5.1 O Primeiro Contato ............................................................. 43
5.2 Declarando as Propriedades .................................................... 46
5.2.1 Identificadores ................................................................ 47
5.3 Conhecendo as Propriedades mais Comuns .................................. 47
5.3.1 Name ........................................................................... 47
5.3.2 Text ............................................................................. 48
5.3.3 Location “X e Y” .............................................................. 48
5.3.4 Size “Height e Width” ....................................................... 48
5.3.5 Font ............................................................................. 48
5.3.6 BackColor ...................................................................... 49
5.3.7 TabIndex ....................................................................... 49
5.4 Desvendando Eventos .......................................................... 49
5.4.1 Click ............................................................................ 50
5.4.2 KeyPress ........................................................................ 50
5.4.3 Enter ............................................................................ 50
5.4.4 Leave ........................................................................... 51
5.4.5 Resize .......................................................................... 51
5.4.6 TextChanged ................................................................... 51
5.5 Métodos Simples ................................................................ 51
5.5.1 Show( ) ......................................................................... 51
5.5.2 Close( ) ......................................................................... 51
5.5.3 Refresh( ) ...................................................................... 51
5.5.4 Dispose( ) ...................................................................... 52
5.5.5 Hide( ) .......................................................................... 52
5.6 Melhorando nosso Primeiro Contato .......................................... 52
5.7 Debugando uma Aplicação ..................................................... 53
5.8 Um Giro pelos Componentes ................................................... 55

6 Anatomia de Nosso Projeto C# ...................................... 61


6.1 Alternativas Gratuitas .......................................................... 62
6.1.1 Sharp Develop ................................................................. 63
6.1.2 WebMatrix ..................................................................... 64
6.2 Namespaces ...................................................................... 65
6.3 Class .............................................................................. 67
6.3.1 O Assistente Add Class ....................................................... 68
6.4 Procedimentos e Funções ...................................................... 69
6.4.1 Métodos ........................................................................ 69
6.4.2 O Assistente Add Method .................................................... 70
6.5 Compilando e Executando um Programa ..................................... 71
6.6 Assemblies ....................................................................... 72
6.6.1 Código Gerenciado ........................................................... 74
6.6.2 Verificações em Tempo de Compilação .................................... 75
6.7 Opções de Compilação .......................................................... 75
6.8 Extensões de Arquivos no Visual Studio .NET ............................... 76
6.8.1 Arquivos .SLN ................................................................. 76
6.8.2 Arquivos .CSPROJ ............................................................. 77
6.8.3 Arquivos .CSPROJ.USER ..................................................... 77
6.8.4 Arquivos ASPX ................................................................. 77
6.8.5 Arquivos ASMX ................................................................. 77
6.8.6 Arquivos CS .................................................................... 77
6.9 Explorando o ILDASM ........................................................... 78
6.10 .NET Remoting ................................................................. 80
6.11 Documentação de Código no .NET ........................................... 81
6.11.1 Documentação XML ......................................................... 84
6.11.2 Integração com IntelliSense. .............................................. 84

7 Variáveis na Linguagem C# .......................................... 89


7.1 Tipos .............................................................................. 89
7.1.1 Tudo é Objeto ................................................................. 90
7.2 Inteiros Assinados ............................................................... 91
7.2.1 Tipo Short ...................................................................... 92
7.2.2 Tipo Int ......................................................................... 92
7.2.3 Tipo long ....................................................................... 92
7.3 Inteiros não Assinados .......................................................... 92
7.3.1 Tipo byte ....................................................................... 92
7.3.2 Tipo ushort .................................................................... 93
7.3.3 Tipo uint ....................................................................... 93
7.3.4 Tipo ulong ...................................................................... 93
7.4 Tipos Lógicos .................................................................... 93
7.4.1 Tipo bool ....................................................................... 93
7.5 Tipo de Caractere ............................................................... 93
7.5.1 char ............................................................................. 93
7.6 Ponto Flutuante .................................................................. 94
7.6.1 float ............................................................................ 94
7.6.2 double .......................................................................... 94
7.6.3 decimal ......................................................................... 94
7.7 Tipos de Data e Hora ........................................................... 94
7.7.1 DateTime ....................................................................... 95
7.7.2 Regionalizando o Formato da Data ......................................... 96
7.8 Tipo String (texto) ............................................................ 100
7.9 Tipos Referência versus Tipos Valor ........................................ 100
7.10 Orientações Importantes sobre Variáveis ................................ 102
7.10.1 Variáveis Automáticas .................................................... 102
7.10.2 Variáveis de Instância .................................................... 102
7.10.3 Variáveis Estáticas ........................................................ 103

8 Modificadores ........................................................ 105


8.1 Modificadores de Parâmetros ................................................ 105
8.2 Modificadores para Tudo ..................................................... 106
8.2.1 Modificadores de Classe ................................................... 107
8.2.2 Modificadores de Membros ................................................ 107
8.2.3 Modificadores de Acesso ................................................... 108

9 Conscientizando C# ................................................. 109


9.1 Palavras Reservadas (Keywords) ............................................ 109
9.2 Expressões ..................................................................... 110
9.2.1 Condicionais ................................................................. 110
9.3 Loops ............................................................................ 112
9.3.1 For ............................................................................ 113
9.3.2 Foreach / in ................................................................. 114
9.3.3 While ......................................................................... 115
9.3.4 Do/while ..................................................................... 115
9.4 A Infame Instrução Goto ...................................................... 116
9.4.1 Uma História (muito) Breve ............................................... 116
9.4.2 Utilizando a Instrução Goto ............................................... 116
9.5 A Instrução Return ............................................................. 119
9.6 Operadores ..................................................................... 120
9.6.1 Operadores Lógicos ........................................................ 122
9.6.2 Operadores Unários ........................................................ 122
9.6.3 Operadores Binários ........................................................ 123
9.6.4 Operadores de Atribuição .................................................. 125
9.6.5 Precedência de Operadores ................................................ 126
9.6.6 Uma Confusão Conhecida .................................................. 127

10 Conversão de Valores e Arrays .................................. 129


10.1 Conversão do Tipo Cast ..................................................... 131
10.2 Funções de Conversão de Tipos ........................................... 132
10.2.1 ToBoolean ................................................................... 132
10.2.2 ToByte ....................................................................... 132
10.2.3 ToChar ...................................................................... 132
10.2.4 ToDateTime ................................................................ 132
10.2.5 ToDecimal .................................................................. 132
10.2.6 ToDouble .................................................................... 133
10.2.7 ToInt16 ...................................................................... 133
10.2.8 ToInt32 ...................................................................... 133
10.2.9 ToInt64 ...................................................................... 133
10.2.10 ToSingle ................................................................... 133
10.2.11 ToString ................................................................... 133
10.2.12 ToUInt16 ................................................................... 133
10.2.13 ToUInt32 ................................................................... 133
10.2.14 ToUInt64 ................................................................... 133
10.3 Arrays .......................................................................... 134
10.3.1 Atribuindo Valores aos Arrays ............................................ 134
10.3.2 Arrays Multidimensionais ................................................. 134
10.3.3 Todos os Arrays são Derivados de System.Array ...................... 135
10.3.4 Redimensionando um Array .............................................. 138

11 Funções Predefinidas ............................................. 139


11.1 Funções Matemáticas ....................................................... 139
11.1.1 Abs .......................................................................... 139
11.1.2 Acos ......................................................................... 139
11.1.3 Asin .......................................................................... 139
11.1.4 Atan ......................................................................... 140
11.1.5 Atan2 ........................................................................ 140
11.1.6 Ceiling ...................................................................... 140
11.1.7 Cos .......................................................................... 140
11.1.8 Cosh ......................................................................... 140
11.1.9 Exp .......................................................................... 140
11.1.10 Floor ....................................................................... 140
11.1.11 IEEERemainder ........................................................... 140
11.1.12 Log ......................................................................... 140
11.1.13 Log10 ...................................................................... 140
11.1.14 Max ........................................................................ 141
11.1.15 Min ......................................................................... 141
11.1.16 Pow ......................................................................... 141
11.1.17 Round ...................................................................... 141
11.1.18 Sign ........................................................................ 141
11.1.19 Sin ......................................................................... 141
11.1.20 Sinh ........................................................................ 141
11.1.21 Sqrt ........................................................................ 141
11.1.22 Tan ......................................................................... 141
11.1.23 Tanh ........................................................................ 141
11.2 Utilizando Algumas Funções Matemáticas ................................ 142
11.2.1 Desenhando Formulário .................................................. 142
11.2.2 Criando Funcionalidades ao Programa .................................. 143
11.3 Criando um Jogo de Lógica ................................................. 143
11.4 Função para Obter Informações de Arquivos ............................ 148
11.4.1 Exercício Utilizando essa Função ........................................ 150
11.4.1.1 Desenhando o Formulário .............................................. 150
11.5 Função para Obter Informações de Rede ................................. 153
11.5.1 Exercício Utilizando essas Funções para Rede ........................ 154
11.5.1.1 Desenhando o Formulário .............................................. 154
12 Desvendando Aplicações WinForms ............................ 157
12.1 Um Exemplo MDI ............................................................. 158
12.2 O Projeto SDI ................................................................. 161
12.2.1 O Primeiro Passo: Os Forms ............................................. 161
12.2.2 Passando Valores entre os Forms ........................................ 163
12.3 Propriedades de um Form .................................................. 169
12.4 Adicionando Componentes .................................................. 170
12.5 Eventos e Delegações ....................................................... 171
12.5.1 Por que Precisamos de Delegates ....................................... 177
12.6 Técnicas de Redimensionamento de Forms .............................. 178

13 Programação Orientada a Objetos (POO) .................... 185


13.1 Objetos ........................................................................ 186
13.2 Construtores .................................................................. 187
13.3 Destrutores ................................................................... 187
13.4 Propriedades .................................................................. 188
13.5 Herança e Inherit Forms .................................................... 189
13.5.1 Herdando Componentes Visuais ......................................... 190
13.5.2 Sobreposição de Métodos ................................................ 191
13.5.3 Sobrecarga de Métodos ................................................... 193
13.5.4 O Projeto do Form Base .................................................. 194
13.5.5 O Form Filho ............................................................... 196
13.5.6 Códigos entre Pai e Filho ................................................. 197
13.6 Polimorfismo ................................................................. 201
13.7 Interface ...................................................................... 203
13.8 Por que é Importante Usar POO? ........................................... 203

14 Criando Componentes ............................................. 205


14.1 Meu Primeiro Componente ................................................. 205
14.2 Evoluindo o Componente ................................................... 207
14 .3 Adicionando Propriedades ao Componente .............................. 212

15 Input e Output de Arquivos ..................................... 215


15.1 O Namespace System.IO .................................................... 215
15.1.1 Create ....................................................................... 216
15.1.2 CreateText ................................................................. 216
15.1.3 AppendText ................................................................. 216
15.1.4 Exists ....................................................................... 216
15.1.5 Copy ......................................................................... 217
15.1.6 Move ........................................................................ 217
15.1.7 Open ........................................................................ 217
15.1.8 OpenRead ................................................................... 218
15.1.9 OpenText ................................................................... 218
15.1.10 OpenWrite ................................................................ 218
15.1.11 GetAttributes ............................................................. 218
15.1.12 SetAttributes ............................................................. 219
15.2 A Classe FileInfo .............................................................. 219
15.3 A Classe Directory ............................................................ 219
15.3.1 CreateDirectory ............................................................ 220
15.3.2 Delete ....................................................................... 220
15.3.3 Exists ....................................................................... 220
15.3.4 GetDirectories ............................................................. 220
15.3.5 GetFiles ..................................................................... 221
15.3.6 GetLogicalDrives .......................................................... 221
15.3.7 GetParent ................................................................... 221
15.3.8 Move ........................................................................ 222
15.3.9 GetCurrentDirectory ...................................................... 222
15.3.10 SetCurrentDirectory ..................................................... 222
15.4 A Classe DirectoryInfo ....................................................... 222
15.5 A Classe Stream .............................................................. 222
15.5.1 Close ........................................................................ 223
15.5.2 Flush ........................................................................ 223
15.5.3 Read ......................................................................... 223
15.5.4 ReadByte .................................................................... 224
15.5.5 Write ........................................................................ 224
15.5.6 WriteByte ................................................................... 224
15.6 The FileStream Class ........................................................ 224
15.6.1 BinaryReader ............................................................... 225
15.6.2 BinaryWriter ................................................................ 225
15.6.3 Directory .................................................................... 225
15.6.4 DirectoryInfo ............................................................... 225
15.6.5 File .......................................................................... 225
15.6.6 FileInfo ...................................................................... 226
15.6.7 StreamReader .............................................................. 226
15.6.8 StreamWriter .............................................................. 226
15.7 Aplicando o IO ................................................................ 226
15.8 Exemplo Rápido – Abrir e Salvar Streams ................................ 227

16 Especializando em C# ............................................. 229


16.1 Manipulando Strings ......................................................... 229
16.1.1 Imutabilidade e a Classe StringBuilder ................................. 230
16.1.2 Teste de Performance: String versus StringBuilder ................... 231
16.2 Estruturas ..................................................................... 233
16.2.1 O que Você não Pode Fazer com Struct ................................. 234
16.3 Tipos Enumerados ........................................................... 234
16.4 Aplicações Assíncronas (MSMQ) ............................................ 235
16.4.1 Por que Usar o MSMQ? .................................................... 235
16.4.2 Motivos para se utilizar o MSMQ? ....................................... 236
16.4.3 Cenários Típicos para Comunicação Assíncrona ...................... 236
16.4.4 Implementando ............................................................ 237
16.4.5 Dicas sobre o MS Message Queue ....................................... 237
16.5 Encriptação e Decriptação com o C# ...................................... 238
17 Tratando Exceções ................................................. 243
17.1 Classes de Exceções mais Comuns ........................................ 244
17.2 O Comando Throw ........................................................... 245
17.3 Liberando Recursos .......................................................... 246
17.3.1 Tipos de Tratamentos de Exceções Suportadas em C# .............. 247
17.3.2 Try / Catch / Finally ...................................................... 247
17.4 A Classe Exception ........................................................... 248
17.5 O Componente ErrorProvider ............................................... 249

18 XML – A Base do .NET ............................................. 251


18.1 Introdução .................................................................... 251
18.1.1 Objetivos do Desenvolvimento da XML ................................ 251
18.2 O Documento XML ........................................................... 252
18.3 Uma Agenda – WinForms e XML ........................................... 252
18.4 Classes XML mais Usadas ................................................... 256

19 Trabalhando com Bases de Dados .............................. 259


19.1 Classes do ADO .NET ........................................................ 259
19.1.1 Data Classes ............................................................... 259
19.1.2 Managed Providers ........................................................ 259
19.1.3 Um Exemplo Prático ....................................................... 260
19.1.4 Explicando e Excluindo ................................................... 265
19.2 DataSet ........................................................................ 267
19.2.1 DataSet Tipado ............................................................ 267
19.3 Validações do XSD ............................................................ 273
19.3.1 Master-Detail .............................................................. 273
19.4 Um Exemplo DataEntry ...................................................... 278
19.5 Controlando o Estado do Formulário ...................................... 282
19.5.1 Validações, Formatações e Exceções ................................... 284
19.6 Realizando Buscas ........................................................... 287
19.7 Advanced DataBindings ..................................................... 289
19.8 Conectando um Banco MS-Access ......................................... 292
19.8.1 Entendendo Dynamic Properties ......................................... 295
19.9 Classes Data .................................................................. 297
19.9.1 System.Data ............................................................... 298
19.9.2 System.Data.Common .................................................... 298
19.9.3 System.Data.OleDb ....................................................... 298
19.9.4 System.Data.SqlClient .................................................... 299
19.9.5 System.SqlTypes ........................................................... 299

20 Aplicações Multiidiomas .......................................... 301


20.1 Adicionando ao Projeto um Arquivo de Resources Padrão .............. 301
20.2 Compilando o Arquivo de Resources Padrão .............................. 303
20.3 Criando Arquivos de Resources Dependentes da Cultura ............... 304
20.4 Satellite Assemblies ......................................................... 305
20.4.1 Trabalhando com Satellite Assemblies .................................. 306
20.5 Uma Aplicação Completa .................................................... 306

21 Smart Devices ...................................................... 313


21.1 Pocket PC ..................................................................... 313
21.2 SmartPhones .................................................................. 317

Apêndice A .............................................................. 329


O Frameworks Class Library (FCL) .............................................. 329
System ............................................................................... 329
System.CodeDom .................................................................. 330
System.CodeDom.Compiler ....................................................... 330
System.Collections ................................................................. 330
System.Collections.Specialized .................................................. 330
System.ComponentModel ......................................................... 330
System.Configuration ............................................................. 330
System.Data ........................................................................ 330
System.EnterpriseServices ....................................................... 331
System.Globalization .............................................................. 331
System.IO ........................................................................... 331
System.Messaging ................................................................. 331
System.Net ......................................................................... 331
System.Reflection .................................................................. 331
System.Resources .................................................................. 331
System.Runtime.CompilerServices .............................................. 332
System.Runtime.InteropServices ................................................ 332
System.Runtime.Remoting ....................................................... 332
System.Runtime.Activation ...................................................... 332
System.Runtime.Contexts ........................................................ 332
System.Runtime.Lifetime ........................................................ 332
System.Security .................................................................... 332
System.Security.Cryptography ................................................... 333
System.Security.Cryptography.Xml ............................................... 333
System.Threading ................................................................. 333
System.Timers ..................................................................... 333
System.Web ........................................................................ 333
System.Web.Caching .............................................................. 333
System.Web.Configuration ....................................................... 334
System.Web.Hosting .............................................................. 334
System.Web.Mail .................................................................. 334
System.Web.Security .............................................................. 334
System.Web.Services ............................................................. 334
System.Web.SessionState ........................................................ 334
System.Web.UI ..................................................................... 335
System.Web.UI.HTMLControls ................................................... 335
System.Web.UI.WebControls ..................................................... 335
System.Windows.Forms .......................................................... 335
System.XML ......................................................................... 335
Apêndice B .............................................................. 337
Garbage Collection ................................................................. 337
Funcionamento do Gerenciamento de Objetos COM .......................... 339
Nos Bastidores do Garbage Collector ............................................ 339
Trabalhando em Parceria com o Garbage Collector ........................... 340
Considerações Finais .............................................................. 340

Apêndice C .............................................................. 341


O SQL ................................................................................ 341
Comandos SQL-DML ............................................................... 342
Pesquisa (SELECT) ................................................................. 342
GROUP BY ........................................................................... 343
Cláusula HAVING ................................................................... 344
Cláusula ORDER BY ................................................................. 344
Inserindo (INSERT INTO) .......................................................... 344
UPDATE .............................................................................. 345
Exclusão (DELETE) ................................................................. 346
Subconsultas SQL .................................................................. 347

Apêndice D .............................................................. 351


Exercícios ........................................................................... 351
Primeiro Problema: Palavras Proibidas .......................................... 351
Segundo Problema: Movendo o Form ............................................ 353
Terceiro Problema: A Calculadora ................................................ 354
Quarto Problema: Chamando uma Função VB .NET em C# ................... 355
Quinto Problema: Adicionando uma Nova Característica a um Objeto ..... 356
Sexto Problema: Como Copiar e Colar Textos e Imagens com o C# ......... 359
Sétimo Problema: Trabalhando com Operações de Datas .................... 363
Oitavo Problema: Construindo um Visualizador de Imagens ................. 370
Nono Problema: Escrevendo um Editor de Texto Simples .................... 373
Último Problema: A “Saideira” ................................................... 383

Apêndice E .............................................................. 387


Nomes para Componentes (Notação Húngara) ................................. 387
Windows Forms .................................................................... 387
Data .................................................................................. 389
Bibliografia ......................................................................... 389

Apêndice F .............................................................. 391


Operadores ......................................................................... 391

Apêndice G .............................................................. 393


Caracteres ASCII ................................................................... 393

Você também pode gostar