sexta-feira, 21 de março de 2014

Copiar e colar com o C# (Blick)


Com o C# este é o tipo de tarefa que não merece a classificação de problema, ou seja, ele já lhe fornece tudo pronto e fácil de usar.
Para valorizar mais o nosso exemplo, vou aproveitar e ensinar a utilizar “region”, que serve para organizar melhor nossos códigos no ambiente do Visual Studio.NET.
Primeiramente, construa um form conforme sugere a imagem a seguir:
Copiar e colar com o C#
Somente para confirmar, visto que na imagem não esta muito claro, o objeto branco a esquerda do form é um textbox com a propriedade “Multiline = True”. O objeto da direita é um picturebox.

Segundamente, se é que existe esta palavra, vamos começar a escrever nossos códigos. Para o botão “Copiar” da esquerda, que é o que vai trabalhar com textos, escreva o seguinte código no evento click:
private void button1_Click(object sender, System.EventArgs e)
{
// Coloca o conteúdo do textbox1 na área de transferência
Clipboard.SetDataObject(textBox1.Text,true);
}
Quando comentei mais acima que seria uma fácil implementação, fui extremamente sincero. Veja no código que a classe “clipboard” possue um método chamado SetDataObject que seria semanticamente similar a atribuir um valor a uma propriedade. Outra coisa que temos que concordar é que a classe clipboard é totalmente intuitiva, pense sinceramente qual nome você daria para uma classe com esta finalidade?
Entretanto para o botão colar, aparentemente é um pouco mais complicado, o que no fundo não é, pois apenas verificamos se existe algo no clipboard e depois aplicamos um “cast” para forçar a validação do tipo para o formato ANSI, com classe DataFormat, mais especificamente com o método “Text”. Vamos ao código:
private void button2_Click(object sender, System.EventArgs e)
{
// Verifica se existe algum texto na área de transferência
if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))


// Coloca o texto dentro do textbox1
textBox1.Text = Clipboard.GetDataObject().
GetData(DataFormats.Text).ToString();

else
textBox1.Text  = “O Clipboard não contém texto.”;
}

Nesta altura de nosso programa já estamos habilitados a fazer testes, execute-o e verifique se esta funcionando corretamente (o que eu tenho certeza que sim).
As implementações dos botões copiar e colar para imagens são praticamente idênticos ao dos botões para texto, diferenciando apenas no código de colar que o “cast” será com o método Bitmap da classe DataFormat. Verifique abaixo:
Para o botão copiar.
private void button4_Click(object sender, System.EventArgs e)
{
// Coloca a imagem do picturebox1 na área de transferência
Clipboard.SetDataObject(pictureBox1.Image,true);
}
Para o botão colar.
private void button3_Click(object sender, System.EventArgs e)
{
// Verifica se existe alguma imagem na área de transferência
 if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Bitmap))
/* Importante: Para uma melhor visualização,
* configurar a propriedade SizeMode para StrechImage */
}
Caso você não tenha entendido, os caracteres “/* e */” correspondem a comentários multi-linhas.
Agora vamos comentar sobre organização dos seus códigos fontes. Uma das várias regras existentes sobre boas práticas de códigos fontes, é a regra de comentar explicitamente seu procedimento ou função e agrupa-los por similaridade de fluxo lógico. Na nossa prática, seria dizer que você deve escrever os códigos de copiar e colar textos juntos fisicamente e perceptivelmente separados dos códigos de copiar e colar imagens.
Sem dúvida que esta boa prática se aplica facilmente a qualquer ferramenta de programação, independentemente da linguagem. Porém a proposta do Visual Studio.Net vai muito além disto. Imagine você além de separar os códigos fontes, pode resumi-los visualmente da mesma forma que os documentos XML. Observem as imagens a seguir e visualmente será muito mais simples de compreender.

Nenhum comentário:

Postar um comentário