Page 1
Introdução ao .NET
Framework
[email protected]
System, Console, Drawing,
Math, OleDB, Form,
Control, DialogResult,
DllImport, FileStream,
Security, References,
Microsoft, Type,
ComboBox, Main, List,
HashTable, Activator,
DataSet, DataReader,
DateTime.Now, Exception,
MessageBox, Application,
WebService . . .
(sc)2
1º Simpósio de Computação do Sul Capixaba
“Todas as áreas
computando novas idéias”
Page 2
[email protected]
Introdução ao .NET Framework
Framework de desenvolvimento
Oque é
Windows Forms
Web Forms
Web Services
Console Application
Class Library
Windows Service
Page 3
[email protected]
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
Servidores
Web Services
Desenvolvedores Microsoft
.NET
Page 4
[email protected]
Introdução ao .NET Framework
Multiplataforma
.NET Framework
Microsoft .NET Framework
Mono
Suporte a várias linguagens de programação
Encapsulamento o SO através da CLR
Page 5
O .NET aceita várias linguagens de progra-mação (C#, VB, C++, Delphi, entre outras) . As bibliotecas ( o framework em si ) possuem uma grande coleção de classes que podem ser usadas e implementadas em sua aplicação. O CLR é quem gerencia a execução do código, juntamente com o Garbage Collector.
Linguagens de Programação
Framework 1.1
Framework 2.0
Framework 3.5
Bibliotecas .NET
Common Language Runtime
Sistema Operacional
[email protected]
Introdução ao .NET Framework
.NET Framework
Page 6
[email protected]
Introdução ao .NET Framework
.NET Framework
1
2
3
Código Fonte C#, VB, C++ MSIL Code
Compilador MSIL
MSIL Code Código de Máquina
JIT Compiler
Código de Máquina Aplicação
CLR
Page 7
[email protected]
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
Page 8
[email protected]
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
Page 9
[email protected]
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
Page 10
[email protected]
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
Page 11
Demo: Conhecendo o Visual
Studio
Console Application
Windows Application
Class Library
Project
Solution
Debug
Code Snipeet
Documentação
[email protected]
Introdução ao .NET Framework
Page 12
Demo: Programando com o
Visual Studio
Console Application
Classe Console
Delegates e Métodos Anônimos
Unsafe Code
Extension Methods
[email protected]
Introdução ao .NET Framework
Page 13
Windows Application
Formulários
MDI
SDI
Design
Controles
Tratamento de erros
Membros estáticos
Demo: Programando com o
Visual Studio
[email protected]
Introdução ao .NET Framework
Page 14
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
[email protected]
Introdução ao .NET Framework
Page 15
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
Tarefa: Programando com o
Visual Studio
[email protected]
Introdução ao .NET Framework
Page 16
[email protected]
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‛);
string s = sb.ToString();
sb.AppendText(‚ .Net ‛);
sb.AppendText(‚Framework‛);
‚Microsoft‛
‚.Net ‛
‚Framework‛
‚Microsoft .Net Fr‛
Page 17
[email protected]
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
^\d{5}$
Início da expressão
Somente Números
5 dígitos
Fim da expressão
Page 18
[email protected]
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
Page 19
[email protected]
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
Page 20
[email protected]
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();
Page 21
[email protected]
Introdução ao .NET Framework
.NET Framework
Coleções
.Net 1.0
System.Collections
.Net 2.0
System.Collections.Generic
System.Collections.Specialized
Listas
Dicionários
Page 22
[email protected]
Introdução ao .NET Framework
.NET Framework
Interfaces de Coleções
IEnumerable
ICollection
IList IDictionary
Page 23
[email protected]
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
Page 24
[email protected]
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); }
Page 25
[email protected]
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()); }
Page 26
[email protected]
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()); }
Page 27
[email protected]
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)); }
Page 28
[email protected]
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
Page 29
[email protected]
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];
Page 30
Demo: Trabalhando com
coleções
Collections
Collections.Generics
List
Dictionary
Linq
[email protected]
Introdução ao .NET Framework
Page 31
[email protected]
Introdução ao .NET Framework
Namespaces
System.Data
System.IO
System.Drawing
System.Threading
System.Diagnostics
Page 32
Acesso a dados
Banco de dados
Componentes
Acesso a banco de dados (SQL Server)
Acesso a arquivos XML
Desenvolvimento em camadas
[email protected]
Introdução ao .NET Framework
Page 33
Banco de Dados
[email protected]
Introdução ao .NET Framework
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
Page 34
Banco de Dados
[email protected]
Introdução ao .NET Framework
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
Coluna
Registro
Tabela de Pessoas
Page 35
Banco de Dados
[email protected]
Introdução ao .NET Framework
Conceitos Importantes
Chave primária
Chave estrangeira
Views
Page 36
SQL
Structured Query Language
[email protected]
Introdução ao .NET Framework
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
Page 37
SQL
Structured Query Language
[email protected]
Introdução ao .NET Framework
DCL
GRANT GRANT SELET OF UF TO ‘user1’
REVOKE REVOKE SELET OF UF TO ‘user1’
DML
DELETE DELETE FROM UF WHERE ID = 1
SELECT SELECT * FROM UF
Page 38
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
[email protected]
Introdução ao .NET Framework
Page 39
Tabelas
[email protected]
Introdução ao .NET Framework
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
Page 40
Tabelas
[email protected]
Introdução ao .NET Framework
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
Page 41
[email protected]
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
IDataReader
IDataAdapter
Banco de Dados
DataSet
Page 42
[email protected]
Introdução ao .NET Framework
ADO.NET
IDbConnection
IDbCommand Banco De Dados
Aplicação
IDataReader
Page 43
[email protected]
Introdução ao .NET Framework
ADO.NET
IDbConnection
Open()
Close()
ConnectionString
State
Page 44
[email protected]
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();
Data Source=Endereço do SQLServer; Initial Catalog =Nome do Banco de dados; Integrated Security=SSPI;
String de Conexão do SQL Server
http://www.connectionstrings.com/
Page 45
[email protected]
Introdução ao .NET Framework
ADO.NET
IDbCommand
CommandText
CommandType
Connection
ExecuteNonQuery
ExecuteReader
ExecuteScalar
Page 46
[email protected]
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();
Page 47
[email protected]
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();
Page 48
[email protected]
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); }
Page 49
[email protected]
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();
Page 50
[email protected]
Introdução ao .NET Framework
ADO.NET
DataSet
DataTable
DataRow
DataColumn
PrimaryKey
DataRelation
Page 51
[email protected]
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;
Page 52
[email protected]
Introdução ao .NET Framework
ADO.NET
Controles para manipulação de dados
DataGridView
DataGridView dgvCidades = new DataGridView(); dgvCidade.DataSource = dtCidade;
Page 53
[email protected]
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;
Page 54
[email protected]
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
<?xml version="1.0" encoding="UTF-8"?> <Pessoa> <Nome>Will</Nome> <Idade>27</Idade> </Pessoa>
Tag introdutória do xml, versão e encodificação
Abre a tag Pessoa
Fecha a tag Pessoa
Page 55
[email protected]
Introdução ao .NET Framework
ADO.NET
XML
<?xml version="1.0" standalone="yes"?> <BDPessoasCidades> <Pessoa> <ID>1</ID> <Nome>Thiago</Nome> <IDCidade>1</IDCidade> </Pessoa> <Pessoa> <ID>2</ID> <Nome>Jean</Nome> <IDCidade>1</IDCidade> </Pessoa> <Cidade> <ID>1</ID> <Nome>Cachoeiro</Nome> </Cidade> </BDPessoasCidades>
Page 56
[email protected]
Introdução ao .NET Framework
ADO.NET
Demo: Usando XML para acesso a dados
XML
DataSet
DataTable
DataGridView
Page 57
Demo: Aplicação multi cama-
da para acesso a dados
SQL Server
ADO.NET
Camadas
Generics
OO
[email protected]
Introdução ao .NET Framework
ADO.NET
Page 58
Arquivos
Manipulação de Arquivos
Escrita / Leitura
Encriptação
Compactação
Serialização
[email protected]
Introdução ao .NET Framework
Page 59
[email protected]
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‛);
Page 60
[email protected]
Introdução ao .NET Framework
Arquivos
FileStream
FileStream fs = new FileStream(‚NomeDoArquivo‛, FileMode, FileAccess);
FileMode.Append
FileMode.Create
FileMode.Open
FileAccess.Read
FileAccess.Write
FileAccess.ReadWrite
fs.Read(Byte[], offset, count);
fs.Write(Byte[], offset, count);
fs.Flush();
fs.Position
fs.Close();
fs.Seek(offset, SeekOrigin);
SeekOrigin.Begin SeekOrigin.Current SeekOrigin.End
Page 61
[email protected]
Introdução ao .NET Framework
Arquivos
StreamWriter
StreamWriter sw = new StreamWriter(fs); StreamWriter sw = new StreamWriter(‚Nome Do Arquivo‛);
sw.Write(Tipo);
sw.WriteLine(Tipo);
char
bool
float
decimal
string
etc . . .
Exeto
Byte
sw.Flush();
sw.Close();
Page 62
[email protected]
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();
Page 63
Demo: Aplicação para cópia
de arquivos
File
FileStream
Byte[]
Cópia de arquivos
[email protected]
Introdução ao .NET Framework
Arquivos
Page 64
Demo: Leitura e escrita de
arquivos texto
StreamReader
StreamWriter
[email protected]
Introdução ao .NET Framework
Arquivos
Page 65
[email protected]
Introdução ao .NET Framework
Arquivos
Compactação
Formato zip
System.IO. Compression
DeflateStream
GZipStream
CompressionMode.Compress CompressionMode.Decompress
Page 66
[email protected]
Introdução ao .NET Framework
Arquivos
Compactação
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();
Criar um GZipStream para compactar os dados
Ler todos os bytes do arquivo original
Escrever os bytes no destino, objeto GZipStream
Page 67
[email protected]
Introdução ao .NET Framework
Arquivos
Serialização
Técnica usada para persistir objetos
Grava em disco
Transmissão pela rede
Formato binário
Formato texto
Altenativa ao banco de dados *
Page 68
[email protected]
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
Page 69
[email protected]
Introdução ao .NET Framework
Arquivos
Serialização
System.Xml.Serialization
Transitar dados entre sistemas diferentes
Somente membros públicos
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); } }
Não precisa estar marcado como Serializable
Page 70
Demo: Aplicação para
compactação de arquivos
Compactar
Descompactar
[email protected]
Introdução ao .NET Framework
Arquivos
Page 71
Demo: Aplicação para
serialização de arquivos
Serializar
Deserializar
Formato Binário
[email protected]
Introdução ao .NET Framework
Arquivos
Page 72
[email protected]
Introdução ao .NET Framework
Arquivos
Manipulando arquivos e pastas
DriverInfo
DirectoryInfo
FileInfo
Path
Directory
FileSystemWatcher
TreeView
TreeNode
Page 73
[email protected]
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
Page 74
[email protected]
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); }
Page 75
[email protected]
Introdução ao .NET Framework
Arquivos
DirectoryInfo
DirectoryInfo Dir = new DirectoryInfo(@"C:\Program Files");
Dir.Create()
Dir.Delete() Dir.Delete(true)
Dir.CreateSubdirectory(‚Microsoft‛)
Dir.CreationTime
Dir.GetDirectories() Dir.GetFiles()
Dir.Root Dir.Parent
Dir.LastAccessTime
Page 76
[email protected]
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); } } }
Page 77
[email protected]
Introdução ao .NET Framework
Arquivos
FileInfo
FileInfo fi = new FileInfo(@"C:\Program Files\Messenger\msnmsgr.exe");
fi.Create()
fi.Encrypt() fi.Decrypt()
fi.Delete()
fi.CreationTime
fi.Directory fi.DirectoryName
fi.FullName Dir.Extension
fi.LastAccessTime
fi.Length
Page 78
[email protected]
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)); }
Page 79
[email protected]
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
Page 80
[email protected]
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();
Page 81
[email protected]
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);
Page 82
[email protected]
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); }
Page 83
[email protected]
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 +Info1.1 +Info1.2 - Info1.3 +Info1.3.1 +Info1.4
+ Info2 + Info3 +Info3.1
TreeNode
TreeNode
TreeNode TreeView
Page 84
[email protected]
Introdução ao .NET Framework
Arquivos
TreeView
Nodes
Nodes
Nodes
. . .
Page 85
Demo: Aplicação para
gerenciamento de arquivos
DirectoryInfo
FileInfo
TreeView
FileSystemWatcher
DriveInfo
TreeNode
[email protected]
Introdução ao .NET Framework
Arquivos
Page 86
Gráficos
Desenhando Gráficos
Trabalhando com imagens
Formatando textos
Customizando controles
[email protected]
Introdução ao .NET Framework
Page 87
[email protected]
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
Page 88
[email protected]
Introdução ao .NET Framework
Gráficos
System.Drawing
Graphics
Região onde todo desenho é feito
Form
Button
Panel
etc
Control.CreateGraphics()
Page 89
[email protected]
Introdução ao .NET Framework
Gráficos
System.Drawing
Pen
Pen p = new Pen(Color.Red, 5);
Brush
SolidBrush
SolidBrush solido = new SolidBrush(Color.Green);
LinearGradientBrush
Pen p = new Pen(solido,5);
Page 90
[email protected]
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
Page 91
[email protected]
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;
Page 92
[email protected]
Introdução ao .NET Framework
Gráficos
System.Drawing
Graphics grafico = this.CreateGraphics();
grafico.DrawEllipse(Pen, Rectangle);
grafico.FillEllipse(Pen, Rectangle);
Image imagem = Image.FromFile(‚C:\\Foto.jpg‛);
grafico.DrawImage(imagem, Point);
grafico.DrawLine(Pen, Point, Point);
grafico.DrawLines(Pen, Point[]);
Page 93
[email protected]
Introdução ao .NET Framework
Gráficos
System.Drawing
grafico.DrawPie(Pen, Rectangle,fAnguloIni, fAnguloFim);
grafico.DrawPie(new Pen(Color.Black), new Rectangle(50,50,250,250),0,90);
grafico.DrawPie(new Pen(Color.Black), new Rectangle(50,50,250,250),0,270);
Page 94
[email protected]
Introdução ao .NET Framework
Gráficos
System.Drawing
grafico.FillElipse(Brush, Rectangle);
grafico.FillPolygon(Brush, Rectangle);
grafico.DrawPolygon(Pen, Rectangle);
Page 95
Demo: Trabalhando com
linhas e formas
Pen
SolidBrush
LinearGradientBrush
Graphics
UserControl
[email protected]
Introdução ao .NET Framework
Gráficos
Page 96
Introdução ao .NET Framework
Gráficos
Imagens
PictureBox
PictureBox img = new PictureBox();
img.BackgroundImage = Image.FromFile(‚foto.jpg‛);
img.BackgroundImage = new Bitmap(‚foto.jpg‛);
img.SizeMode = PictureBoxSizeMode.AutoSize;
PictureBoxSizeMode.StretchImage
PictureBoxSizeMode.Normal
Page 97
[email protected]
Introdução ao .NET Framework
Gráficos
Imagens
Bitmap
Bitmap bmp = new Bitmap(1920, 1080);
Graphics AreaGrafica = Graphics.FromImage(bmp);
Brush b = new LinearGradientBrush(new Point(1, 1),new Point(1920, 1080),Color.White,Color.Red);
AreaGrafica.FillRectangle(b, 1, 1, 1920, 1080);
Bmp.Save(‚imagem.jpg‛, ImageFormat.Jpeg);
Page 98
[email protected]
Introdução ao .NET Framework
Gráficos
Imagens
Bitmap
private static Image RecortaImagem(this Image imagem, Rectangle AreaCorte) { Bitmap bmpImage = new Bitmap(img); Bitmap bmpRecorte = bmpImage.Clone(AreaCorte, bmpImage.PixelFormat); return (Image)(bmpRecorte); }
Page 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);
[email protected]
Page 100
[email protected]
Introdução ao .NET Framework
Gráficos
Demo: Trabalhando imagens
e textos
Pen
SolidBrush
Graphics
Page 101
Introdução ao .NET Framework
Gráficos
Customização
[email protected]
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); }
Page 102
Introdução ao .NET Framework
Gráficos
Customização
[email protected]
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 } }
Page 103
[email protected]
Introdução ao .NET Framework
Gráficos
Demo: Customização de
controles
Pen
SolidBrush
LinearGradientBrush
Graphics
UserControl
Page 104
Threads
BackgroundWorker
Processos assíncronos
ThreadStart
Customizando controles
[email protected]
Introdução ao .NET Framework
Page 105
[email protected]
Introdução ao .NET Framework
Threads
Multi Thread
Várias tarefas ao mesmo tempo
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
Thread
Taferas assíncronas
BackgroundWorker
Page 106
Threads
Multi Thread
[email protected]
Introdução ao .NET Framework
Tarefa 1 Tarefa 2 Tarefa 3 Tarefa 4
10 min 10 min 10 min 10 min
Se, e somente se, as tarefas forem independentes
Tarefa 2
Tarefa 1
Tarefa 4
Tarefa 3
40 min
10 min
Page 107
[email protected]
Introdução ao .NET Framework
Threads
BackgroundWorker
Não manipular a interface do usuário
RunWorkerCompleted
ProgressChanged
BackgroundWorker bWorker = new BackgroundWorker(); bWorker.DoWork += new DoWorkEventHandler(CalcFatorial); bWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Fatorial_Completo); bWorker.RunWorkerAsync(10);
System.ComponentModel
Page 108
[email protected]
Introdução ao .NET Framework
Threads
BackgroundWorker
public ulong Fatorial(uint Numero) { if(Numero <= 1) return 1; else return Numero * Fatorial(Numero - 1); }
private void CalcFatorial(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; e.Result = Fatorial((int)e.Argument); }
Page 109
[email protected]
Introdução ao .NET Framework
Threads
BackgroundWorker
private void Fatorial_Completo(object sender, RunWorkerCompletedEventArgs e) { MessageBox.Show(‚O Fatorial é ‛+ e.Result.ToString()); }
Page 110
[email protected]
Introdução ao .NET Framework
Threads
ParameterizedThreadStart
Para acessar a UI devemos “invocar” a Thread principal
Thread
ThreadStart
Thread thr = new Thread(new ParameterizedThreadStart( CalcFatorial)); thr.Star(10);
Page 111
[email protected]
Introdução ao .NET Framework
Threads
Thread
private void CalcFatorial(objetc valor) { ulong fat = Fatorial((int)valor); EscreveMsgDelegate MsgDelegate = new EscreveMsgDelegate(EscreveMsg); this.Invoke(MsgDelegate, new object[] {‚O valor do fatorial de ‛ + valor.ToString + ‚ é igual a ‛ + fat.ToString() } ); }
public delegate void EscreveMsgDelegate(string Mensagem);
public void EscreveMsg(string Mensagem) { MessageBox.Show(Mensagem); }
Page 112
[email protected]
Demo: Usando Theads para
cálculos complexos
Thread
ParameterizedThreadStart
Delegate
Invoke
Threads
Introdução ao .NET Framework
Page 113
The End
[email protected]
Introdução ao .NET Framework