01.Blogs :
vanderlei  
Abrange tudo relacionado a programação ........

Como copiar e colar textos e imagens com o C#

 


Este é um exemplo bem interessante, pensei bastante no quanto ele é realmente útil para desenvolvedores de aplicações comerciais, porém em quase todos os livros que li sobre diversas linguagens, este exemplo esta presente.

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:



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))
		// Coloca a imagem no picturebox
		pictureBox1.Image = (Bitmap)Clipboard.GetDataObject().
			GetData(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.

Proposta sem aplicação do "#region":



Proposta com aplicação do "#region":



Após explicado visualmente e compreendido (assim espero), vamos aprender como implementamos isto.

Sintaxe:

#region <Identificador>
#endregion


Na forma mais simples que posso pensar em explicar, é como criar um grupo XML que permite a expansão e comprensão da visualização do código.

Para o efeito visível na imagem acima (com a aplicação do region), apenas adicionei a sintaxe conforme abaixo: #region Metodos de copiar e colar textos

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);	
		}

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.";
}
#endregion

posted on Thursday, June 01, 2006 4:24 AM by vanderlei


 
03.UPDATE CALENDAR :
<June 2006>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

05.MY LINKS :

07.Subscriptions :

Subscriptions


© Copyright 2005 Microsoft Corporation. All Rights Reserved.
Terms of Use | Privacy Statement | Code of Conduct | Hosted by MaximumASP for Microsoft
WHO-BAR