Mostrando postagens com marcador C#. Mostrar todas as postagens
Mostrando postagens com marcador C#. Mostrar todas as postagens

Inserindo ComboBox em KryptonDataGridView

Olá pessoal, depois de algum tempo sem postar aqui no blog trago pra voces um artigo sobre o componente Krypton DataGridView,que faz parte do Krypton Toolkit,uma suite de componentes gratuitos que melhora a aparência dos Windows Forms. Aproveitando a falta de  tutoriais a respeito do Toolkit, vou ensinar a colocar dinamicamente colunas do tipo combobox em um KryptonDataGridView.

Antes de Iniciar 
Certifique-se de baixar e instalar o Toolkit,que automaticamente ira adicionar os componentes na toolbox.

Passo 1
Crie um novo projeto do tipo KryptonForm e adicione um componente KryptonDatagridView. Ele é encontrado na paleta Krypton na caixa de ferramentas.

Passo 2
Faça a vinculação do DataGridView com algum DataSet previamente criado setando a propriedade DataSource do componente.

Passo 3
Agora se executar o projeto voce conseguira visualizar o DataGridView  preenchido com os valores do seu DataSet. Nesse tutorial como exemplo aprenderemos a adicionar uma coluna do tipo combobox retornando todos os nomes armazenados em uma tabela de funcionários ao KryptonDataGridView.No evento Load do seu KryptonForm após a consulta ao banco de dados adicione o seguinte trecho de código:


KryptonDataGridViewComboBoxColumn ColunaID = new KryptonDataGridViewComboBoxColumn();
ColunaID.HeaderText = "Nome do Funcionário";
ColunaID.Width = 80;
while(da1.Read())
{
string id=(string)da1["Nome"];
ColunaID.Items.Add(id.ToString());
}

kryptonDataGridView1.Columns.Add(ColunaID);


Entendendo o código
Na primeira linha instanciamos um objeto do tipo KryptonDataGridViewComboBoxColumn,e setamos a propriedade HeaderText para o texto que queremos que apareça no header juntamente com o tamanho da coluna. Em seguida iteramos sobre um objeto do tipo DataReader e adicionamos o retorno dos dados na combobox e por fim vinculamos a coluna ao DataGridView atraves do método Add().

Classe de Manipulação de Arquivos - C#

Classe muito útil que retorna em um arraylist os arquivos em determinada pasta e subpastas da mesma.É composta de um método para listar os arquivos em uma determinada pasta .Lembrando que para utilizar basta criar um objeto DirectoryInfo e em seguida iterar sobre os dados retornados pelos métodos.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;
namespace WindowsFormsApplication1
{
class utilitaria
{
public ArrayList mostrarArquivos(DirectoryInfo dir)
{
ArrayList arquivos = new ArrayList();
foreach (FileInfo arq in dir.GetFiles())
{
arquivos.Add(arq.FullName);
}
return arquivos;
}

}
}


Para utilizar essa classe no seu código basta referenciá-la e em seguida criar um objeto DirectoryInfo com o caminho da pasta desejada.


utilitaria util = new utilitaria(); //criando a nova instância
DirectoryInfo dir = new DirectoryInfo(@"c:/teste");
foreach(string arquivo in util.mostarArquivos(dir)) //acessando o método
{
listBox1.Items.Add(arquivo) //adicionando os arquivos listados numa listbox
}


No dia a dia do desenvolvedor,é mto comum vermos a necessidade de se trabalhar com arquivos, e a classe acima nesse sentido se torna tambem bastante prática e útil.

Tutorial - Criando Enumerações com C#

Uma forma muito eficaz de declarar tipos é o uso das enumerações.Esse tipo de dado deve ser usado quando queremos dar apenas algumas opções dentro de um conjunto pré-definido de alguma característica específica,por exemplo,para um desenvolvedor ou o profissional que vai lidar com o seu código.Como são extremamente simples de entender e implementar,as enumerações são sempre bem vindas para melhorar a legibilidade e a performance da sua aplicação.O código a seguir mostra a criação de uma enumeração com as notas musicais

enum notas_musicais : int { dó, ré, mi, fá, sol, lá, sí };


Esse código cria uma enumeração que começa do zero e vai até o numero de elementos-1,e é facilmente acessada via código:


notas_musicais notas; //criando uma variavel de enumeração
notas = notas_musicais.fá; //atribuindo um valor para a variável


Para acessar o valor escolhido,podemos escolher o conteudo ou a posição do elemento dentro da enumeração.O código a seguir mostra numa label o valor do conteúdo da enumeração(literal) e uma outra versão abaixo do mesmo código mostra como acessar o elemento pela sua posição.


label1.Text = notas.ToString(); //aqui irá aparecer "fá"
label1.Text = Convert.ToString((int)notas); // aqui mostra a posição 3(repare no cast)


Lembrando que as enumerações são tipos valor e são criadas na pilha,com acesso mais rápido sem tanta sobrecarga de processamento.

Entendendo Tipos-Valor e Tipos- Referência

Hoje vou falar de um assunto um pouco espinhoso para aqueles que estão começando a programar com o .NET Framework. Trata-se dos tipos de dados e como eles são criados na memória.
Existem dois tipos de dados no .NET Framework: os do tipo valor(que tem o tamanho máximo de 16 bytes e são criados na pilha,tais como o tipo int,int32,byte,boolean,estruturas,enumerações,etc) e os do tipo referencia(são criados no heap,como classes,objetos,o tipo string,etc).A principal diferença entre os tipos é determinante para a performance final da aplicação,sendo que os dados do tipo valor são criados diretamente na pilha,mas os dados tipo referencia não serão criados até serem inicializados com a palavra-chave new seguida do chamamento correto ao construtor.Vale lembrar que os tipos valor,quando copiados,fornecem uma cópia idêntica do seu conteúdo diferentemente dos tipos referência,onde uma cópia na verdade cria uma referência ao objeto ao invés de uma atribuição propriamente dita.

Usando Ionic.Utils.Zip com c#

O assembly Ionic.Utils.Zip é composto de classes fáceis de usar e é usado para a criação de arquivos compactados(zipados).Nesse exemplo,mostrarei como criar um arquivo simples e compactado via código.



Using Ionic.Utils.Zip; //usando a referencia
.
.
.
.
Zipfile zip = new ZipFile("fotos.zip"); //criando a instancia
zip.AddFile("foto001.jpg"); //adicionando arquivos
zip.AddFile("foto002.jpg");
zip.AddFile("foto003.jpg");
zip.Save("fotos.zip"); //salvando o zip


Tutorial - Manipulando XML com C#

Para manipular arquivos XML podemos usar as classes do namespace System.Xml,praticas e faceis de aprender .Nesse tutorial usaremos a classe XMLTextWriter,para a escrita e a classe XMLDocument para a iteração sobre os nós do arquivo.

Escrevendo um arquivo XML

XmlTextWriter chave = new XmlTextWriter("galeria_arte.xml",null);
chave.WriteStartDocument();
chave.WriteStartElement("Quadro");
chave.WriteElementString("Autor", "Henri Matisse");
chave.WriteElementString("Título", "Natureza Morta com Magnólias");
chave.WriteElementString("Estilo", "Fauvismo");
chave.WriteElementString("Ano", "1941");
chave.WriteEndElement();
chave.Close();



Lendo o conteúdo de um arquivo XML

Para ler um XML vamos primeiro declarar um novo XMLDocument,em seguida iterar sobre os nós e por fim recuperar os seus valores.


XmlDocument doc = new XmlDocument();
doc.Load("galeria_arte.xml");
XmlNode nos = doc.SelectSingleNode("/Quadro/Autor");
XmlNode nos2 = doc.SelectSingleNode("/Quadro/Titulo");
XmlNode nos3 = doc.SelectSingleNode("/Quadro/Estilo");
XmlNode nos4 = doc.SelectSingleNode("/Quadro/Ano");
string no1 = nos.InnerText;// para acessar o valor do elemento use a propriedade InnerText.


Como se pode notar,o namespace System.Xml oferece todo o suporte para a manipulaçao de xml.Se quiser se aprofundar no assunto consulte a documentação no forum msdn.

Trabalhando com arquivos e pastas no C#

Para facilitar o trabalho do desenvolvedor o namespace System.IO disponibiliza algumas classes bastante úteis e fáceis de usar,como a classe DirectoryInfo para manipulação das pastas e a classe FileInfo que promove informações e meios de manipulação de arquivos. O seguinte código retorna o numero de arquivos em determinada pasta.Ele verifica a existencia da pasta informada(caso contrario cria a mesma),recupera os arquivos armazenados nela e por fim faz a iteração que incrementa uma variavel do tipo int que representa o numero total de arquivos.


int VerificarArquivos()
{
int num_arqs = 0;
DirectoryInfo direc = new DirectoryInfo("C:/arquivos");
if (direc.Exists == true)
{
FileInfo[] arq = direc.GetFiles();

foreach (FileInfo arqs in arq)
{
num_arqs++;
}

}
else
{
direc.Create();
}
return num_arqs;
}