Introducao ao .Net
-
Upload
andre-teixeira-lopes -
Category
Technology
-
view
1.324 -
download
1
Transcript of Introducao ao .Net
Introdução ao .NET
Framework
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”
Introdução ao .NET Framework
Framework de desenvolvimento
Oque é
Windows Forms
Web Forms
Web Services
Console Application
Class Library
Windows Service
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
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
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
Introdução ao .NET Framework
.NET Framework
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
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
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
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
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
Demo: Conhecendo o Visual
Studio
Console Application
Windows Application
Class Library
Project
Solution
Debug
Code Snipeet
Documentação
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
Introdução ao .NET Framework
Windows Application
Formulários
MDI
SDI
Design
Controles
Tratamento de erros
Membros estáticos
Demo: Programando com o
Visual Studio
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
Introdução ao .NET Framework
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
Introdução ao .NET Framework
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‛
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
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
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
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
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();
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
Introdução ao .NET Framework
.NET Framework
Interfaces de Coleções
IEnumerable
ICollection
IList IDictionary
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
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); }
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()); }
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()); }
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)); }
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
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];
Demo: Trabalhando com
coleções
Collections
Collections.Generics
List
Dictionary
Linq
Introdução ao .NET Framework
Introdução ao .NET Framework
Namespaces
System.Data
System.IO
System.Drawing
System.Threading
System.Diagnostics
Acesso a dados
Banco de dados
Componentes
Acesso a banco de dados (SQL Server)
Acesso a arquivos XML
Desenvolvimento em camadas
Introdução ao .NET Framework
Banco de Dados
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
Banco de Dados
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
Banco de Dados
Introdução ao .NET Framework
Conceitos Importantes
Chave primária
Chave estrangeira
Views
SQL
Structured Query Language
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
SQL
Structured Query Language
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
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
Introdução ao .NET Framework
Tabelas
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
Tabelas
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
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
Introdução ao .NET Framework
ADO.NET
IDbConnection
IDbCommand Banco De Dados
Aplicação
IDataReader
Introdução ao .NET Framework
ADO.NET
IDbConnection
Open()
Close()
ConnectionString
State
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/
Introdução ao .NET Framework
ADO.NET
IDbCommand
CommandText
CommandType
Connection
ExecuteNonQuery
ExecuteReader
ExecuteScalar
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();
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();
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); }
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();
Introdução ao .NET Framework
ADO.NET
DataSet
DataTable
DataRow
DataColumn
PrimaryKey
DataRelation
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;
Introdução ao .NET Framework
ADO.NET
Controles para manipulação de dados
DataGridView
DataGridView dgvCidades = new DataGridView(); dgvCidade.DataSource = dtCidade;
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;
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
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>
Introdução ao .NET Framework
ADO.NET
Demo: Usando XML para acesso a dados
XML
DataSet
DataTable
DataGridView
Demo: Aplicação multi cama-
da para acesso a dados
SQL Server
ADO.NET
Camadas
Generics
OO
Introdução ao .NET Framework
ADO.NET
Arquivos
Manipulação de Arquivos
Escrita / Leitura
Encriptação
Compactação
Serialização
Introdução ao .NET Framework
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‛);
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
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();
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();
Demo: Aplicação para cópia
de arquivos
File
FileStream
Byte[]
Cópia de arquivos
Introdução ao .NET Framework
Arquivos
Demo: Leitura e escrita de
arquivos texto
StreamReader
StreamWriter
Introdução ao .NET Framework
Arquivos
Introdução ao .NET Framework
Arquivos
Compactação
Formato zip
System.IO. Compression
DeflateStream
GZipStream
CompressionMode.Compress CompressionMode.Decompress
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
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 *
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
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
Demo: Aplicação para
compactação de arquivos
Compactar
Descompactar
Introdução ao .NET Framework
Arquivos
Demo: Aplicação para
serialização de arquivos
Serializar
Deserializar
Formato Binário
Introdução ao .NET Framework
Arquivos
Introdução ao .NET Framework
Arquivos
Manipulando arquivos e pastas
DriverInfo
DirectoryInfo
FileInfo
Path
Directory
FileSystemWatcher
TreeView
TreeNode
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
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); }
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
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); } } }
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
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)); }
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
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();
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);
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); }
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
Demo: Aplicação para
gerenciamento de arquivos
DirectoryInfo
FileInfo
TreeView
FileSystemWatcher
DriveInfo
TreeNode
Introdução ao .NET Framework
Arquivos
Gráficos
Desenhando Gráficos
Trabalhando com imagens
Formatando textos
Customizando controles
Introdução ao .NET Framework
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
Introdução ao .NET Framework
Gráficos
System.Drawing
Graphics
Região onde todo desenho é feito
Form
Button
Panel
etc
Control.CreateGraphics()
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);
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
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;
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[]);
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);
Introdução ao .NET Framework
Gráficos
System.Drawing
grafico.FillElipse(Brush, Rectangle);
grafico.FillPolygon(Brush, Rectangle);
grafico.DrawPolygon(Pen, Rectangle);
Demo: Trabalhando com
linhas e formas
Pen
SolidBrush
LinearGradientBrush
Graphics
UserControl
Introdução ao .NET Framework
Gráficos
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
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);
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); }
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);
Introdução ao .NET Framework
Gráficos
Demo: Trabalhando imagens
e textos
Pen
SolidBrush
Graphics
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); }
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 } }
Introdução ao .NET Framework
Gráficos
Demo: Customização de
controles
Pen
SolidBrush
LinearGradientBrush
Graphics
UserControl
Threads
BackgroundWorker
Processos assíncronos
ThreadStart
Customizando controles
Introdução ao .NET Framework
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
Threads
Multi Thread
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
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
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); }
Introdução ao .NET Framework
Threads
BackgroundWorker
private void Fatorial_Completo(object sender, RunWorkerCompletedEventArgs e) { MessageBox.Show(‚O Fatorial é ‛+ e.Result.ToString()); }
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);
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); }
Demo: Usando Theads para
cálculos complexos
Thread
ParameterizedThreadStart
Delegate
Invoke
Threads
Introdução ao .NET Framework