O documento apresenta uma introdução ao .NET Framework, descrevendo suas principais características como plataforma multiplataforma e suporte a várias linguagens de programação. Apresenta também os principais namespaces do .NET Framework e ferramentas como o Visual Studio para desenvolvimento de aplicações.
1. (sc)2 Introdução ao
1º Simpósio de .NET
Framework
Computação do
Sul Capixaba System, Console, Drawing,
Math, OleDB, Form,
Control, DialogResult,
DllImport, FileStream,
Security, References,
“Todas as áreas
Microsoft, Type,
computando novas idéias” ComboBox, Main, List,
HashTable, Activator,
DataSet, DataReader,
DateTime.Now, Exception,
MessageBox, Application,
WebService . . .
andre.lopes@studentpartners.com.br
2. Introdução ao .NET Framework
Oque é
Framework de desenvolvimento
Windows Forms
Web Forms
Web Services
Console Application
Class Library
Windows Service
andre.lopes@studentpartners.com.br
3. Introdução ao .NET Framework
.NET Framework
.NET Framework consiste em um conjunto de componentes que
modularizam e simplificam o desenvolvimento de aplicações.
Clientes
Desenvolvedores Servidores
Microsoft
.NET
Web Services
andre.lopes@studentpartners.com.br
4. Introdução ao .NET Framework
.NET Framework
Multiplataforma
Microsoft .NET Framework
Mono
Suporte a várias linguagens de programação
Encapsulamento o SO através da CLR
andre.lopes@studentpartners.com.br
5. Introdução ao .NET Framework
.NET Framework
O .NET aceita várias
linguagens de progra- Linguagens de Programação
mação (C#, VB, C++,
Delphi, entre outras) . As
bibliotecas ( o framework Framework Framework Framework
em si ) possuem uma 1.1 2.0 3.5
grande coleção de classes
que podem ser usadas e
implementadas em sua Bibliotecas .NET
aplicação. O CLR é quem
gerencia a execução do
código, juntamente com o Common Language Runtime
Garbage Collector.
Sistema Operacional
andre.lopes@studentpartners.com.br
6. Introdução ao .NET Framework
.NET Framework
1 Compilador MSIL
Código Fonte
C#, VB, C++ MSIL Code
2
JIT Compiler
Código de
MSIL Code
Máquina
3
CLR
Código de
Máquina Aplicação
andre.lopes@studentpartners.com.br
7. Introdução ao .NET Framework
.NET Framework
O .NET Framework está organizado em namespaces, de
modo que cada ferramenta tem sua localização específica
Microsoft.CSharp
Ferramentas para compilação e geração de código com o uso da
linguagem C#
System
Tipos fundamentais, interfaces, eventos exceções. É o namespace
principal
System.Collections
Contém interfaces e classes que definem várias coleções de objetos
tais com Array, Lista, Pilha, dicionários. Também contém
ferramentas para gerenciamento de listas genéricas
System.Data
Prove ferramentas para manipulação de dados de diferentes
fontes. Constitui a arquitetura do ADO.NET
andre.lopes@studentpartners.com.br
8. Introdução ao .NET Framework
.NET Framework
System.Drawing
Classes para trabalhar com gráficos e imagens
System.IO
Contém tipos que permitem a manipulação de arquivos de pastas.
Escrita e leitura;
System.Net
Oferece interface de programação para muitos dos protocolos de
rede hoje disponíveis. Programação de Sockets e requisições Web
por exemplo
System.Windows.Forms
Classes voltadas a criação de aplicações baseadas em windows
System.Threading
Prove ferramentas para a programação multi thread. Processos
simultâneos
andre.lopes@studentpartners.com.br
9. Introdução ao .NET Framework
.NET Framework
System.Globalization
Fornece ferramentas para trabalhar com a cultura de onde o
programa está sendo executado. Informações como língua, moeda,
calendário e formatações.
System.Web.Services
Contém classes que permitem ao desenvolvedor construir e
desenvolver WebServices.
System.Timers
Prove componentes que possibilitam o acionamento de eventos em
intervalor regulares de tempo
andre.lopes@studentpartners.com.br
10. Introdução ao .NET Framework
.NET Framework
Microsoft Visual Studio
IDE
Suporte a várias liguagens
Criação de instaladores (somente na versão paga)
Tipos de Aplicações
Console Application
Windows Application
Web Site
Web Service (somente na versão paga)
Windows Service (somente na versão paga)
Class Library
andre.lopes@studentpartners.com.br
11. Introdução ao .NET Framework
Demo: Conhecendo o Visual
Studio
Console Application
Windows Application
Class Library
Project
Solution
Debug
Code Snipeet
Documentação
andre.lopes@studentpartners.com.br
12. Introdução ao .NET Framework
Demo: Programando com o
Visual Studio
Console Application
Classe Console
Delegates e Métodos Anônimos
Unsafe Code
Extension Methods
andre.lopes@studentpartners.com.br
13. Introdução ao .NET Framework
Demo: Programando com o
Visual Studio
Windows Application
Formulários
MDI
SDI
Design
Controles
Tratamento de erros
Membros estáticos
andre.lopes@studentpartners.com.br
14. Introdução ao .NET Framework
Tarefa: Programando com o
Visual Studio
Crie uma bibliteca (Class Library) com duas
entidades Pessoa e Carro. Contendo
Carro:Marca, Modelo, Ano, Placa
Pessoa: Nome, CPF, e uma lista de carros
Ambas as classes tem de ser públicas
Uma pessoa pode conter até 3 carros
Nenhuma das classes podem ser herdadas
Tempo Estimado: 5min
andre.lopes@studentpartners.com.br
15. Introdução ao .NET Framework
Tarefa: Programando com o
Visual Studio
Crie uma aplicação Windows Forms que
referencie as entidade criadas. E faça seu
cadastro.
A Aplicação deve ser MDI
Os carros já cadastrados devem estar
disponíveis em uma ComboBox no cadastro de
pessoas.
Faça uso de uma classe estática para guardar
as informações cadastradas
Ao fechar a aplicação os dados não devem
ser salvos.
Tempo Estimado: 25min
andre.lopes@studentpartners.com.br
16. Introdução ao .NET Framework
.NET Framework
System.Text.StringBuilder
Resolve o problema da imutabilidade do tipo string,
gerenciando melhor a memória
StringBuilder sb = new StringBuilder(); Memória
sb.AppendText(‚Microsoft‛); ‚Microsoft‛
sb.AppendText(‚ .Net ‛); ‚.Net ‛
sb.AppendText(‚Framework‛); ‚Framework‛
‚Microsoft .Net Fr‛
string s = sb.ToString();
andre.lopes@studentpartners.com.br
17. Introdução ao .NET Framework
.NET Framework
System.Text.RegularExpressions
Um método formal de se especificar um padrão de texto.
Somente números
Email
Data/Hora
IP
Método complexo, porém rápido de validar valores. Ao invés
de usar try...cath
Somente Números
^d{5}$ Fim da expressão
5 dígitos
Início da expressão
andre.lopes@studentpartners.com.br
18. Introdução ao .NET Framework
.NET Framework
System.Text.RegularExpressions
using System;
using System.Text.RegularExpressions;
class VarificaPadroes
{
bool ENumero(string texto)
{
return (new Regex(‚^[0-9]*$‛)
).IsMatch(texto);
}
}
http://regexlib.com
andre.lopes@studentpartners.com.br
19. Introdução ao .NET Framework
.NET Framework
System.DateTime
DateTime dt = DateTime.Now;
int dia = dt.Day; int mes = dt.Month; int ano = dt.Year;
int hora = dt.Hour; int min = dt.Minute;
int sec = dt.Second;
dt.ToString(‚dd/MM/yyyy‛) //19/02/2010
dt.ToString(‚dd/MM/yyyy HH:mm:ss‛) //19/02/2010 14:30:00
andre.lopes@studentpartners.com.br
20. Introdução ao .NET Framework
.NET Framework
GarbageColletor
Não determinístico
Retira da memória somente os espaços não utilizados, que
já estão desvinculados do programa
GC.Collect();
andre.lopes@studentpartners.com.br
22. Introdução ao .NET Framework
.NET Framework
Interfaces de Coleções
IEnumerable
ICollection
IList IDictionary
andre.lopes@studentpartners.com.br
23. Introdução ao .NET Framework
.NET Framework
System.Collections
ArrayList
É uma coleção ordenada
Podemos acessar os elementos usando seu index,
baseado em zero
Expande automaticamente quando adicionamos itens
Sort();
IComparable
QuickSort
andre.lopes@studentpartners.com.br
24. Introdução ao .NET Framework
.NET Framework
System.Collections
//Cria um ArrayList e adiciona objetos
ArrayList arr = new ArrayList();
arr.Add(‚Cachoeiro‛);
arr.Add(‚Alegre‛);
arr.AddRange(new string[]{‚Vitória‛, ‚Rive‛});
//Obtem Cachoeiro, Alegre e Vitória
ArrayList tresPrimeiros = arr.GetRange(0, 3);
arr.Remove(‚Rive‛);
object primeiro = arr[0];
arr.Insert(0, ‚Rio de Janeiro‛);
arr.Sort();
arr.Reverse();
foreach(object item in arrr) { Console.WriteLine(item); }
andre.lopes@studentpartners.com.br
25. Introdução ao .NET Framework
.NET Framework
System.Collections
Fila (Queue)
//Cria uma fila e adiciona objetos
Queue fila = new Queue();
fila.Enqueue(‚Item 1‛);
fila.Enqueue(‚Item 2‛);
fila.Enqueue(‚Item 3‛);
fila.Enqueue(‚Item 4‛);
//Obtém o primeiro item mas não o remove
object item = fila.Peek();
//Desenfileira todos os objetos
while(fila.Count > 0)
{
Console.WriteLine(fila.Dequeue());
}
andre.lopes@studentpartners.com.br
26. Introdução ao .NET Framework
.NET Framework
System.Collections
Pilha (Stack)
//Cria uma pilha e adiciona objetos
Stack pilha = new Stack();
pilha.Push(‚Item 1‛);
pilha.Push(‚Item 2‛);
pilha.Push(‚Item 3‛);
pilha.Push(‚Item 4‛);
//Obtém o primeiro item mas não o remove
object item = pilha.Peek();
//Desenpilha todos os objetos
while(fila.Count > 0)
{
Console.WriteLine(pilha.Pop());
}
andre.lopes@studentpartners.com.br
27. Introdução ao .NET Framework
.NET Framework
System.Collections
Hashtable
Dicionário de chave/Valor
//Cria um hashtable e adiciona entradas de chave/valor
Hashtable Produtos = new Hashtable();
Produtos.Add(‚Macaxera‛,5.9);
Produtos.Add(‚Cane de Sol‛, 7.5);
Produtos.Add(‚Ipioca, 1 Litro‛, 10.0);
Console.WriteLine(‚Porção do cheff‛)
foreach(DictionaryEntry entry in Produtos)
{
Console.WriteLine(string.Format(‚{0} preço {0:C}‛,
entry.Key, entry.Value));
}
andre.lopes@studentpartners.com.br
28. Introdução ao .NET Framework
.NET Framework
System.Collections.Generics
Todos as listas (ArrayList, Queue, Stack, Hashtable, etc) têm
seu tipo genérico implementado
List<T>
List<string>
List<int>
List<object> = ArrayList
Não existe a necessidade de convertermos o tipo para objeto
e na hora de recuperar fazer o unboxing
andre.lopes@studentpartners.com.br
29. Introdução ao .NET Framework
.NET Framework
System.Collections.Generics
//Cria a lista de decimais e adiciona os valores
List<decimal> listValores = new List<decimal>();
listValores.Add(1.5M);
listValores.Add(4.8M);
listValores.Add(0.4M);
listValores.Add(3.9M);
//Não precisamos converter o valor para decimal
decimal vlr = listValores[3];
andre.lopes@studentpartners.com.br
30. Introdução ao .NET Framework
Demo: Trabalhando com
coleções
Collections
Collections.Generics
List
Dictionary
Linq
andre.lopes@studentpartners.com.br
32. Introdução ao .NET Framework
Acesso a dados
Banco de dados
Componentes
Acesso a banco de dados (SQL Server)
Acesso a arquivos XML
Desenvolvimento em camadas
andre.lopes@studentpartners.com.br
33. Introdução ao .NET Framework
Banco de Dados
Conjunto de registros (informações de mesma natureza)
disposto em um estrutura que possibilita a modificação,
inserção, atualização e organização dessas informações.
Está organizado em:
Tabelas
Colunas
Registros
andre.lopes@studentpartners.com.br
34. Introdução ao .NET Framework
Banco de Dados Coluna
ID Nome CPF Cidade
1 Andre 12345678921 Alegre
2 Paulo 12469487670 Cachoeiro
3 Carlos 10457672930 Vitória
4 João 10394874820 Belo Horizonte
5 Maria 05937375958 Guaçui
6 José 30495782845 São Paulo
Registro
Tabela de Pessoas
andre.lopes@studentpartners.com.br
35. Introdução ao .NET Framework
Banco de Dados
Conceitos Importantes
Chave primária
Chave estrangeira
Views
andre.lopes@studentpartners.com.br
36. Introdução ao .NET Framework
SQL
Structured Query Language
DDL
CREATE
CREATE TABLE UF(
ID int,
Nome varchar(100))
DROP
DROP TABLE UF
DML
INSERT
INSERT INTO UF (ID, Nome)
VALUES (1, ‘Alegre’)
UPDATE
UPDATE UF
SET Nome = ‘Guaçui’
WHERE ID = 1
andre.lopes@studentpartners.com.br
37. Introdução ao .NET Framework
SQL
Structured Query Language
DML
DELETE
DELETE FROM UF
WHERE ID = 1
SELECT
SELECT * FROM UF
DCL
GRANT
GRANT SELET OF UF TO ‘user1’
REVOKE
REVOKE SELET OF UF TO ‘user1’
andre.lopes@studentpartners.com.br
38. Introdução ao .NET Framework
Tafera: usando o SQL Server
Vamos agora criar um banco de dados
para o SC2, que será usado posterior-
mente para a prática de acesso a dados
usando o .NET Framework
Tempo Estimado: 20 min
andre.lopes@studentpartners.com.br
39. Introdução ao .NET Framework
Tabelas
Participante
ID int Chave Primária
Nome varchar(120)
CPF numeric(11,0)
IDCidade int
Cidade
ID int Chave Primária
Nome varchar(120)
UF varchar(2)
Minicurso
ID int Chave Primária
Nome varchar(120)
IDParticipante int
Palestra
ID int Chave Primária
Nome varchar(120)
IDParticipante int
andre.lopes@studentpartners.com.br
40. Introdução ao .NET Framework
Tabelas
Participante_Minicurso
IDMinicurso int Chave Primária
IDParticipante int Chave Primária
Participante_Palestra
IDPalestra int Chave Primária
IDParticipante int Chave Primária
Criar diagramas de relacionamento
andre.lopes@studentpartners.com.br
41. Introdução ao .NET Framework
ADO.NET
Microsoft ADO.NET
.NET Framework Data Provider for SQL Server
.NET Framework Data Provider for OLE DB
.NET Framework Data Provider for ODBC
.NET Framework Data Provider for Oracle
.NET Framewor Data Provider
IDbConnection
IDbCommand Banco de Dados
IDataReader
IDataAdapter DataSet
andre.lopes@studentpartners.com.br
42. Introdução ao .NET Framework
ADO.NET
IDbConnection
Banco
De IDbCommand
Dados
IDataReader
Aplicação
andre.lopes@studentpartners.com.br
43. Introdução ao .NET Framework
ADO.NET
IDbConnection
Open()
Close()
ConnectionString
State
andre.lopes@studentpartners.com.br
44. Introdução ao .NET Framework
ADO.NET
SqlConnection
Provedor de acesso ao Sql Server (versão 7.0
ou superior)
Como abrir uma conexão com o banco de dados:
SqlConnection conn = new SqlConnetion();
Conn.ConnectionString = minhaStringDeConexao;
conn.Open();
Conn.Close();
String de Conexão do SQL Server
Data Source=Endereço do SQLServer;
Initial Catalog =Nome do Banco de dados;
Integrated Security=SSPI;
http://www.connectionstrings.com/
andre.lopes@studentpartners.com.br
46. Introdução ao .NET Framework
ADO.NET
SqlCommand
Objeto para conversação com banco de dados SQL Server
7.0 ou superior
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandText = ‚INSERT INTO UF ‚ +
‚(Descricao) VALUES ‛ +
‚(‘es’)‛;
command.ExecuteNonQuery();
andre.lopes@studentpartners.com.br
47. Introdução ao .NET Framework
ADO.NET
ExecuteScalar
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandText = ‚SELECT Descricao ‚ +
‚FROM UF WHERE ID = 1‛;
object obj = command.ExecuteScalar();
otring strDescr = obj.ToString();
andre.lopes@studentpartners.com.br
48. Introdução ao .NET Framework
ADO.NET
ExecuteReader
Só existe enquanto a conexão com o banco está
aberta
SqlConnection CriaConexao()
{
SqlConnectionStringBuilder sqlStrBld = new
SqlConnectionStringBuilder();
sqlStrBld.DataSource = ‚localhost‛;
sqlStrBld.InitialCatalog = ‚SC2‛;
sqlStrBld.IntegratedSecurity = true;
return new SqlConnection(sqlStrBld.ConnectionString);
}
andre.lopes@studentpartners.com.br
49. Introdução ao .NET Framework
ADO.NET
ExecuteReader
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = CriaConexao();
sqlCmd.CommandText = ‚SELECT * FROM CIDADE‛;
sqlCmd.Connection.Open();
SqlDataReader sqlDr = sqlCmd.ExecuteReader();
List<string> Cidades = new List<string>();
while(sqlDr.Read())
{
Cidades.Add(string.Format("{0} - {1}",
sqlDr["Nome"],
sqlDr["UF"]));
}
sqlCmd.Connection.Close();
andre.lopes@studentpartners.com.br
51. Introdução ao .NET Framework
ADO.NET
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = CriaConexao();
sqlCmd.CommandText = ‚SELECT * FROM CIDADE‛;
sqlCmd.Connection.Open();
SqlDataReader sqlDr = sqlCmd.ExecuteReader();
DataTable dtCidade = new DataTable(‚Cidade‛);
dtCidade.Load(sqlDr);
sqlCmd.Connection.Close();
string NomeCidade = dtCidade.Rows[0][1].ToString();
string IDCidade = dtCidade.Rows[0][‚ID‛].ToString();
int NumeroDeCidades = dtCidade.Rows.Count;
andre.lopes@studentpartners.com.br
52. Introdução ao .NET Framework
ADO.NET
Controles para manipulação de dados
DataGridView
DataGridView dgvCidades = new DataGridView();
dgvCidade.DataSource = dtCidade;
andre.lopes@studentpartners.com.br
53. Introdução ao .NET Framework
ADO.NET
Controles para manipulação de dados
ComboBox
List<Cidade> Cidades = ObtemCidades();
ComboBox cmbCidades = new ComboBox();
cmbCidades.DisplayMember = ‚Nome‛;
cmbCidades.ValueMember = ‚ID‛;
cmbCidades.SelectedIndex = -1;
cmbCidades.DataSource = from cidade in Cidades
orderby cidade.Nome
select cidade;
andre.lopes@studentpartners.com.br
54. Introdução ao .NET Framework
ADO.NET
XML
Linguagem de marcação de dados
Provê um sistema de tags para organização de dados
estruturados
Baseado em texto
Tag introdutória do xml, versão e encodificação
<?xml version="1.0" encoding="UTF-8"?>
<Pessoa> Abre a tag Pessoa
<Nome>Will</Nome>
<Idade>27</Idade>
</Pessoa> Fecha a tag Pessoa
andre.lopes@studentpartners.com.br
56. Introdução ao .NET Framework
ADO.NET
Demo: Usando XML para acesso a
dados
XML
DataSet
DataTable
DataGridView
andre.lopes@studentpartners.com.br
57. Introdução ao .NET Framework
ADO.NET
Demo: Aplicação multi cama-
da para acesso a dados
SQLServer
ADO.NET
Camadas
Generics
OO
andre.lopes@studentpartners.com.br
59. Introdução ao .NET Framework
Arquivos
File
File.Exists(‚Nome do arquivo‛);
File.Encrypt(‚Nome do arquivo‛);
File.Decrypt(‚Nome do arquivo‛);
File.Delete(‚Nome do arquivo‛);
File.Move(‚Origem‛,‛Destino‛);
File.GetCreationTime(‚Nome do arquivo‛);
File.GetLastAccessTime(‚Nome do arquivo‛);
andre.lopes@studentpartners.com.br
62. Introdução ao .NET Framework
Arquivos
StreamReader
StreamReader sr = new StreamWriter(fs);
StreamReader sr = new StreamWriter(‚Nome Do Arquivo‛);
int i = sr.Read();
string s = sr.ReadLine();
string s = sr.ReadToEnd();
sr.Close();
andre.lopes@studentpartners.com.br
63. Introdução ao .NET Framework
Arquivos
Demo: Aplicação para cópia
de arquivos
File
FileStream
Byte[]
Cópia de arquivos
andre.lopes@studentpartners.com.br
64. Introdução ao .NET Framework
Arquivos
Demo: Leitura e escrita de
arquivos texto
StreamReader
StreamWriter
andre.lopes@studentpartners.com.br
66. Introdução ao .NET Framework
Arquivos
Compactação
Criar um GZipStream para compactar os dados
Ler todos os bytes do arquivo original
Escrever os bytes no destino, objeto GZipStream
FileStream fsDest = File.Create(‚Memorando.zip‛);
byte[] bData = File.ReadAllBytes(‚Memorando.txt‛);
GzipStream ArqCompactado = new GZipStream(fsDest,
CompressioMode.Compress);
ArqCompactado.Write(bData, 0, bData.Length);
ArqCompactado.Flush();
ArqCompactado.Close();
fsDest.Close();
andre.lopes@studentpartners.com.br
67. Introdução ao .NET Framework
Arquivos
Serialização
Altenativa ao banco de dados *
Técnica usada para persistir objetos
Grava em disco
Transmissão pela rede
Formato binário
Formato texto
andre.lopes@studentpartners.com.br
68. Introdução ao .NET Framework
Arquivos
Serialização
O objeto e todos os seus membros devem ser marcados
com o atributo [Serializable]
Membro não serializados [NonSerializable]
System.Runtime.Serialization
System.Runtime.Serialization.Formatters.Binary
System.Runtime.Serialization.Formatters.Soap
Texto
Melhor para tráfego na rede
andre.lopes@studentpartners.com.br
69. Introdução ao .NET Framework
Arquivos
Serialização
System.Xml.Serialization
Transitar dados entre sistemas diferentes
Somente membros públicos
Não precisa estar marcado como Serializable
using System.Xml.Serialization;
using System.IO;
public class SerializaXML
{
internal void Serializa(object Objeto)
{
XmlSerializer xmlSer = new XmlSerializer(Objeto.GetType());
xmlSer.Serialize((new StreamWriter("test.xml")), Objeto);
}
}
andre.lopes@studentpartners.com.br
70. Introdução ao .NET Framework
Arquivos
Demo: Aplicação para
compactação de arquivos
Compactar
Descompactar
andre.lopes@studentpartners.com.br
71. Introdução ao .NET Framework
Arquivos
Demo: Aplicação para
serialização de arquivos
Serializar
Deserializar
Formato Binário
andre.lopes@studentpartners.com.br
73. Introdução ao .NET Framework
Arquivos
DriverInfo
DriverInfo.GetDrives()
DriverInfo di = new DriverInfo(@‚C:‛);
di.DriverType
DriveType.CDRom
DriveType.Fixed
DriveType.Removable
di.TotalSize
di.TotalFreeSpace
andre.lopes@studentpartners.com.br
74. Introdução ao .NET Framework
Arquivos
DriverInfo
//Obtém todos os drives do computador
DriveInfo[] Drives = DriveInfo.GetDrives();
//Percorre cada Drive e mostra suas informações na tela
foreach (DriveInfo di in Drives)
{
Console.WriteLine(di.Name);
Console.WriteLine(di.AvailableFreeSpace);
Console.WriteLine(di.TotalFreeSpace);
Console.WriteLine(di.Totalpace);
}
andre.lopes@studentpartners.com.br
76. Introdução ao .NET Framework
Arquivos
DirectoryInfo
public void MontaDiretorio(string Dir)
{
Console.WriteLine(Dir);
DirectoryInfo di = new DiretoryInfo(Dir);
foreach(FileSystemInfo item in di.GetFileSystemInfos())
{
if(item is FileInfo)
{
Console.WriteLine(string.Format(‚{0}-{1}‛,
(item as FileInfo).Name,
(item as FileInfo).Length));
}
else if(item is DirectoryInfo)
{
Console.WriteLine((item as DirectoryInfo).Name);
}
}
}
andre.lopes@studentpartners.com.br
78. Introdução ao .NET Framework
Arquivos
FileInfo
public void PropriedadesArquivo(string FileName)
{
Console.WriteLine(FileName);
//Cria o objeto com base no nome do
FileInfo fi = new FileInfo(FileName);
//Como o arquivo é medido em bytes, dividimos por
//1024 para encontrar seu tamanho em KBytes
Console.WriteLine(string.Format(‚Tamanho: {0} KB‛,
fi.Length/1024));
Console.WriteLine(string.Format(‚Criação: {0}‛.
fi.CreationTime.ToString(‚dd/MM/yyyy HH:mm:ss‛));
Console.WriteLine(string.Format(‚Caminho: {0}‛,
fi.FullName));
}
andre.lopes@studentpartners.com.br
79. Introdução ao .NET Framework
Arquivos
Directory
Expõe métodos estáticos para criação movimentação e
enumeração de diretórios e subdiretórios.
Directory.CreateDirectory(‚Nome‛);
Directory.GetCurrentDirectory();
Directory.Move(‚Origem‛,‛Destino‛);
Directory.GetDirectories(@‚C:", "p*‚,
SearchOption.TopDirectoryOnly);
SearchOption.TopDirectoryOnly
SearchOption.AllDirectories
andre.lopes@studentpartners.com.br
80. Introdução ao .NET Framework
Arquivos
Path
Executa operações em instâncias de String que contêm
arquivo ou diretório. Multi-plataforma
Path.GetTempFileName();
Path.GetTempPath();
Path.DirectorySeparatorChar;
Path.GetInvalidPathChars();
Path.GetInvalidFileNameChars();
andre.lopes@studentpartners.com.br
81. Introdução ao .NET Framework
Arquivos
FileSystemWatcher
Sinaliza qualquer modificação na estrutura de arquivo informada
FileSystemWatcher fs = new FileSystemWatcher();
fs.Path = @"C:";
fs.IncludeSubdirectories = true;
fs.EnableRaisingEvents = true;
fs.Changed += new FileSystemEventHandler(Modificado);
fs.Created += new FileSystemEventHandler(Modificado);
fs.Deleted += new FileSystemEventHandler(Modificado);
fs.Renamed += new RenamedEventHandler(Renomeado);
andre.lopes@studentpartners.com.br
82. Introdução ao .NET Framework
Arquivos
FileSystemWatcher
private static void Modificado(object source,
FileSystemEventArgs e)
{
// Especifica o arquivo e se foi modificado,
//criado, ou deletado.
Console.WriteLine(‚Arquivo: " + e.FullPath +
" " + e.ChangeType);
}
private static void Renomeado(object source,
RenamedEventArgs e)
{
// Especifica o nome original e o novo do arquivo
Console.WriteLine(‚Arquivo: {0} renomeado para {1}",
e.OldFullPath, e.FullPath);
}
andre.lopes@studentpartners.com.br
83. Introdução ao .NET Framework
Arquivos
TreeView
Controle usado para mostrar informações hierárquicas, estrutura
de arquivos, em uma estrutura de árvore
System.Windows.Forms
- Info1 TreeNode
+Info1.1 TreeNode
+Info1.2
- Info1.3
TreeView +Info1.3.1 TreeNode
+Info1.4
+ Info2
+ Info3
+Info3.1
andre.lopes@studentpartners.com.br
85. Introdução ao .NET Framework
Arquivos
Demo: Aplicação para
gerenciamento de arquivos
DirectoryInfo
FileInfo
TreeView
FileSystemWatcher
DriveInfo
TreeNode
andre.lopes@studentpartners.com.br
86. Introdução ao .NET Framework
Gráficos
Desenhando Gráficos
Trabalhando com imagens
Formatando textos
Customizando controles
andre.lopes@studentpartners.com.br
87. Introdução ao .NET Framework
Gráficos
System.Drawing
Criar gráficos a partir do zero
Adicionar circulos, linhas e outras formas a interface do usuário
dinamicamente.
Editar e redimensionar figuras
Mudar taxa de compressão de imagens salvas no disco
Adicionar logomarcas copyright ou texto a imagens
andre.lopes@studentpartners.com.br
88. Introdução ao .NET Framework
Gráficos
System.Drawing
Graphics
Região onde todo desenho é feito
Form
Button
Panel
etc
Control.CreateGraphics()
andre.lopes@studentpartners.com.br
89. Introdução ao .NET Framework
Gráficos
System.Drawing
Brush
SolidBrush
SolidBrush solido = new SolidBrush(Color.Green);
LinearGradientBrush
Pen
Pen p = new Pen(Color.Red, 5);
Pen p = new Pen(solido,5);
andre.lopes@studentpartners.com.br
90. Introdução ao .NET Framework
Gráficos
System.Drawing
Estilos de lápis
Pen p = new Pen(Color.Red, 5);
P.DashStyle = DashStyle.Dot
P.DashStyle = DashStyle.Dash
P.DashStyle = DashStyle.DashDot
P.DashStyle = DashStyle.Solid
andre.lopes@studentpartners.com.br
91. Introdução ao .NET Framework
Gráficos
System.Drawing
Estilos de lápis
Pen p = new Pen(Color.Red, 5);
p.StartCap = LineCap.ArrowAnchor;
p.EndCap = LineCap.ArrowAnchor;
p.StartCap = LineCap.DiamondAnchor;
andre.lopes@studentpartners.com.br
99. Introdução ao .NET Framework
Gráficos
Textos
FontFamily
FontFamily ff = new FontFamily(‚Consolas‛);
Font
Font font = new Font(ff,16);
font.Bold = true;
font.Italic = false;
FontConverter conversor = new FontConverter();
font = (Font)conversor.ConvertFromString(‚Arial,12‛);
grafico.DrawString(‚.Net Framework‛, font,
Brushes.Black, Point);
andre.lopes@studentpartners.com.br
100. Introdução ao .NET Framework
Gráficos
Demo: Trabalhando imagens
e textos
Pen
SolidBrush
Graphics
andre.lopes@studentpartners.com.br
101. Introdução ao .NET Framework
Gráficos
Customização
A grande maioria dos tipos em .Net são classes
Os controles gráficos (botões, formulários, etc) são classes
Podem ser herdados
Métodos podem ser sobrecarredaos
Todo tipo gráfico tem um evento chamado OnPaint
protected void OnPaint(PaintEventArgs e)
{
e.Grapics.DrawLine(Pen, Point, Point);
base.OnPaint(e);
}
andre.lopes@studentpartners.com.br
102. Introdução ao .NET Framework
Gráficos
Customização
public sealed class ButtonComLinhas : System.Windows.Forms.Button
{
public ButtonComLinhas(){}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawRectangle(new Pen(Brushes.Black),
e.ClipRectangle);
base.OnPaint
}
}
andre.lopes@studentpartners.com.br
105. Introdução ao .NET Framework
Threads
Multi Thread
Tarefas que demoram para serem concluídas travam a interface
do usuário durante todo seu processamento
Impressão de relatórios
Download de arquivos
Consultas ao banco de dados
Cálculo complexos
Taferas assíncronas
BackgroundWorker
Várias tarefas ao mesmo tempo
Thread
andre.lopes@studentpartners.com.br
106. Introdução ao .NET Framework
Threads
Multi Thread
10 min 10 min 10 min 10 min
Tarefa 1 Tarefa 2 Tarefa 3 Tarefa 4 40 min
Se, e somente se, as tarefas forem independentes
Tarefa 1
Tarefa 2
10 min
Tarefa 3
Tarefa 4
andre.lopes@studentpartners.com.br
107. Introdução ao .NET Framework
Threads
BackgroundWorker
Não manipular a interface do usuário
ProgressChanged
RunWorkerCompleted
System.ComponentModel
BackgroundWorker bWorker = new BackgroundWorker();
bWorker.DoWork += new DoWorkEventHandler(CalcFatorial);
bWorker.RunWorkerCompleted += new
RunWorkerCompletedEventHandler(Fatorial_Completo);
bWorker.RunWorkerAsync(10);
andre.lopes@studentpartners.com.br