Dica: Melhorias na Seleção de Texto do VS2010

Detalhes que fazem diferença. No VS2010, o desenvolvedor pode observar que a apresentação de textos selecionados no Editor de Código foi sensivelmente melhorada. Nas versões anteriores, os textos selecionados são apresentados geralmente com background Azul (Navy) e foreground Branco. O VS2010 tem a capacidade de exibir diferentes camadas (layers) juntas, proporcionando uma qualidade visual muito superior. Confira na imagem abaixo.


Dica: VS2010 ToolBox Search

Com um grande número de controles na sua ToolBox, encontrar o controle desejado nem sempre é uma tarefa prática. No Visual Studio 2010, você pode fazer uma busca nos controles da sua ToolBox. Como? É simples, clique na sua ToolBox, em qualquer controle ou ponto dela. Comece a digitar o nome do controle que você está procurando, por exemplo, para encontrar o controle XamMonthCalendar, digite ‘xammont’ e observe que o Visual Studio muda o controle selecionado da ToolBox de acordo com sua digitação. Veja a figura abaixo:


Dica: Zoom no Editor de Código do VS2010

Todos sabem que é possível utilizar as macros do Visual Studio para aumentar ou diminuir o tamanho da fonte do Editor de Código. Esse recurso é muito útil, principalmente numa apresentação ou treinamento. No VS2010 você pode controlar o Zoom do Editor de Código (sem aumentar/diminuir o tamanho da fonte). Para aplicar o Zoom In/Out mantenha a tecla CTRL pressionada e movimente a roda do seu mouse. Outra forma, ainda mais prática, são os atalhos CTRL+SHIFT+(ponto) para Zoom In e CTRL+SHIFT+(vírgula) para Zoom Out. Experimente!


Dica: Como usar o Clipboard Ring do Visual Studio

Este recurso é realmente muito útil quando precisamos copiar vários fragmentos de código de diferentes procedimentos para criar ou completar um novo procedimento.  Se você copiar (CTRL+C) vários fragmentos de código no Editor de Texto do Visual Studio, você pode usar o atalho de teclado CTRL+SHIFT+V para acionar o recurso de Clipboard Ring e percorrer a coleção de fragmentos copiados.  


Você também pode criar seus snippets, copiando os fragmentos de código e colando-os na ToolBox para poder reutilizá-los a qualquer momento. Você pode simplesmente colar (CTRL+V) o fragmento diretamente na ToolBox ou selecionar o fragmento desejado no Editor de Código e arrastá-lo para a ToolBox.


 Uma vez na ToolBox, você pode renomear os itens copiados para um nome mais sugestivo, facilitando seu trabalho na hora de recuperar esses itens.


 

Dica: CTRL+C e CTRL+V no Editor de Código do Visual Studio

Os comandos Copiar e Recortar do Visual Studio são muito úteis quando estamos trabalhando no Editor de Código. Mesmo sem selecionar nenhum texto, se você invocar um desses comandos, o Visual Studio copiará o conteúdo a linha atual (linha onde está o cursor). Isso é prático e muito útil para o desenvolvedor. Contudo, você pode invocar os comandos Copiar/Recortar acidentalmente e isso poderia substituir o conteúdo da sua Área de Transferência (Clipboard). Para evitar esse problema, acesse o menu Tools -> Options e na seção Text Editor -> All Languages -> General, desmarque a opção Apply Cut or Copy commands to a blank lines when there is no selection (Figura 1).


WPF: O Método PerformClick()

Para os desenvolvedores habituados com as aplicações WindowsForms, o método PerformClick() é um velho conhecido, largamente usado na camada de apresentação para disparar um click num botão existente provocando a execução do código associado a este evento. Contudo, os controles do tipo Button das aplicações WPF não implementam o método PerformClick(), o que frustra o desenvolvedor num primeiro momento. A boa notícia é que este método pode ser facilmente implementado com apenas algumas linhas de código. Observe o código a seguir. 


private void PerformClick(Button btnObject)


{


btnObject.RaiseEvent(


new System.Windows.RoutedEventArgs(


System.Windows.Controls.Button.ClickEvent, btnObject));


} 


A linha de código abaixo demonstra como disparar o evento Click do botão chamado btnCancelar:


 private void Whatever()


{


PerformClick(btnCancelar);


}

WPF: Startup, StartupUri, Application_Startup, MainWindow, ShutdownMode

Esta dica de WPF, daria quase um artigo completo, pois ela ficou muito extensa. Contudo, o conteúdo abordado é formado por tópicos relacionados aos processos de inicialização e finalização de uma aplicação WPF que precisam ser compreendidos pelos desenvolvedores. Nas aplicações WindowsForms, tínhamos o método Main() da classe Program onde inseríamos nosso código para inicialização da nossa aplicação. As aplicações WPF possuem o arquivo App.xaml, que contém a propriedade StartupUri que pode ser utilizada para indicarmos o objeto que será carregado quando a aplicação for executada. Esta propriedade é definida automaticamente quando você cria um novo projeto WPF Application, nela o nome do objeto Window1.xaml é colocado (veja a Figura 1).



Podemos atribuir o nome de qualquer objeto da aplicação à propriedade StartupUri. Você pode defini-la através da linguagem declarativa XAML como mostrado na Figura 1, ou programaticamente, como mostra a Figura 2 logo abaixo.



A propriedade StartupUri atende é prática em alguns cenários, mas quando consideramos o desenvolvimento de uma aplicação comercial, os processos de inicialização, em geral, implementam outras instruções, instanciam objetos, verificam configurações entre outras ações. Neste caso, o evento Startup é a solução mais adequada, através deste evento podemos implementar nosso código de inicialização. Para utilizar este evento, no arquivo App.xaml, o desenvolvedor deve remover a propriedade StartupUri e substituí-la pelo evento Startup, o próprio IntelliSense auxilia o desenvolvedor criando a estrutura do novo procedimento de evento. Veja a Figura 3.




O nome padrão “Application_Startup” dado a este procedimento de evento pode ser alterado de acordo com o gosto do desenvolvedor. Você pode criar um procedimento com um nome qualquer, por exemplo, MinhaAplicacao_Startup e atribuir este nome ao evento Startup no arquivo App.xaml. Abaixo a Figura 4 mostra o código deste procedimento de evento.



Observe a Linha 18 em destaque na Figura 4. A propriedade MainWindow foi carregada com a instância do objeto Window1. Esta propriedade trabalha em conjunto com outra propriedade das aplicações WPF, a propriedade ShutdownMode. Juntas, essas duas propriedades definem o modo de finalização da sua aplicação WPF. A propriedade MainWindow, como padrão, sempre é carregada com o primeiro objeto Window instanciado pela aplicação, mas o desenvolvedor pode atribuir uma nova janela para esta propriedade a qualquer momento, usando o mesmo código apresentado na Linha 18 da Figura 4 


A definição do modo de finalização (ShutdownMode) é importante pois as aplicações WPF, diferentemente das aplicações WindowsForms, não possuem formulários do tipo MDI (Multiple Document Interface), e o desenvolvedor precisa tratar o processo de encerramento da sua aplicação, o que pode ser feito explicitamente, definindo o ShutdownMode como OnExplicitShutdown, neste caso seria necessário implementar um procedimento para finalizar a aplicação, ou ainda, o desenvolvedor poderia optar pelos dois outros modos disponíveis: OnLastWindowClose que faria com que a aplicação fosse finalizada no momento em que o usuário fechasse todas as janelas abertas, e o modo OnMainWindowClose, mais adequado para implementação do modelo MDI, neste caso, quando a janela definida como MainWindow for fechada, a aplicação será finalizada. Veja a Figura 5 que mostra a enumeração da propriedade ShutdownMode.



 O fato das aplicações WPF não possuírem um formulário do tipo MDI, não significa que as novas aplicações não utilizarão este modelo, passaremos a utilizar novos conceitos de aplicações MDI, como por exemplo, a interface dos aplicativos do Microsoft Office ou mesmo o Visual Studio que organizam diversos documentos utilizando guias ou controles do tipo container. A Figura 6 apresenta a interface de uma aplicação comercial, criada com WPF, e que utiliza o conceito de MDI implementado com o auxilio de um controle TabControl e OutlookBar.