10 ejercicios comunes sobre visual studio c#Descripción completa
Visual Studio Code DistilledDescrição completa
Estes es el entorno de trabajo de Visual Studio 2010 con sus nuevas funcionalidades.
>net
Descripción: Nada
Descripción completa
Programação
Descrição completa
Programação
Manual Visual Studio 2012 en InglesFull description
Apostila Visual Mangá
Full description
Descrição completa
Descrição completa
Descrição: Apostila Metodologia Visual
Descrição completa
Descrição completa
Descrição completa
Descrição completa
Visual Basic 2005 Usando Visual Studio 2005
Full description
ÍNDICE CONTROLE DE CÓDIGO FONTE PARA O VISUAL STUDIO......................................................................... 6 INTRODUÇÃO AO CONTROLE DE ORIGEM ................................................................................................................... 6 O QUE HÁ DE NOVO NO CONTROLE DE ORIGEM PARA O VISUAL STUDIO ................................................................. 13 EXECUÇÃO DE TAREFAS DE CONTROLE DE ORIGEM ............................................................................................... 14 COMO: ADICIONAR UM PROJETO AO CONTROLE DE ORIGEM .................................................................................. 14 COMO: ACOPLAR OU DESACOPLAR UMA SOLUÇÃO OU PROJETO ............................................................................ 15 COMO: ALTERAR O LOCAL DA PASTA DE TRABALHO ............................................................................................. 16 COMO CONECTAR OU DESCONECTAR UMA SOLUÇÃO OU UM PROJETO ..................................................................... 16 COMO: COPIAR UM ITEM SOB CONTROLE DE ORIGEM ............................................................................................. 17 COMO: EXCLUIR UM ITEM CONTROLADO POR ORIGEM ........................................................................................... 18 COMO ATIVAR RECUPERAÇÃO AUTOMÁTICA........................................................................................................... 19 COMO DESATIVAR A CRIAÇÃO DA PASTA .ROOT ........................................................................ 19 COMO: ATIVAR CHECK-INS AUTOMÁTICOS ........................................................................................................... 19 COMO: DESATIVAR CHECK-OUTS AUTOMÁTICOS ................................................................................................... 20 COMO: ATIVAR OU DESATIVAR CONTROLE DE ORIGEM.......................................................................................... 20 COMO: EXCLUIR UM ARQUIVO DE CONTROLE DE ORIGEM ...................................................................................... 21 COMO: MOVER UMA RAIZ DE LIGAÇÃO DE PROJETO .............................................................................................. 21 COMO: MOVER UM ITEM CONTROLADO POR FONTE ............................................................................................... 22 COMO: ABRIR UM PROJETO OU SOLUÇÃO DO CONTROLE DE ORIGEM ..................................................................... 22 COMO: RENOMEAR UM ITEM CONTROLADO POR ORIGEM ...................................................................................... 23 COMO: DEFINIR OPÇÕES DE PLUG-IN...................................................................................................................... 24 COMO: TROCAR PLUG-INS DE CONTROLE DE ORIGEM:............................................................................................. 25 COMO: EXIBIR UMA LISTA DE ARQUIVOS COM CHECK-OUT.................................................................................... 25 REFERÊNCIA A INTERFACE DO USUÁRIO DO CONTROLE DE ORIGEM........................................................................ 25 CAIXA DE DIÁLOGO CHANGE SOURCE CONTROL .................................................................................................... 26 CAIXA DE DIÁLOGO CHECK IN (CONTROLE DE CÓDIGO FONTE) ............................................................................. 27 CHECK-OUT PARA A CAIXA DE DIÁLOGO EDIT (CONTROLE DE ORIGEM).................................................................. 28 CAIXA DE DIÁLOGO GET (CONTROLE DE ORIGEM)................................................................................................... 29 JANELA DE CHECK-INS PENDENTES ......................................................................................................................... 30 GUIAS DE PLUG-IN PARA CONTROLE DE ORIGEM (CAIXA DE DIÁLOGO OPTIONS)..................................................... 31 CAIXA DE DIÁLOGO SOURCE CONTROL ................................................................................................................... 34 CAIXA DE DIÁLOGO UNDO CHECKOUT (CONTROLE DE CÓDIGO FONTE)................................................................. 35 CONFIGURAÇÕES DO VISUAL STUDIO .......................................................................................................... 36 COMO: ALTERAR CONFIGURAÇÕES SELECIONADAS ................................................................................................ 37 TRABALHANDO COM CONFIGURAÇÕES.................................................................................................................... 38 COMO: COMPARTILHAR CONFIGURAÇÕES ENTRE COMPUTADORES ....................................................................... 38 COMO: ESPECIFICAR CONFIGURAÇÕES PARA UMA EQUIPE ...................................................................................... 40 IMPORT AND EXPORT SETTINGS WIZARD................................................................................................................ 40 ESCOLHA CONFIGURAÇÕES PARA EXPORTAR, IMPORTAR E EXPORTAR CONFIGURAÇÕES ASSISTENTE .................... 41 NOMEIE O ARQUIVO DE CONFIGURAÇÕES, IMPORTAR E EXPORTAR CONFIGURAÇÕES ASSISTENTE ......................... 41 SALVAR CONFIGURAÇÕES ATUAIS, IMPORTAR E ASSISTENTE PARA EXPORTAÇÃO CONFIGURAÇÕES ....................... 41 ESCOLHA CONFIGURAÇÕES PARA IMPORTAR, IMPORTAR E ASSISTENTE CONFIGURAÇÕES EXPORTAÇÃO ............... 42 ESCOLHA UM COLEÇÃO DE CONFIGURAÇÕES PARA IMPORTAR, IMPORTAR E ASSISTENTE CONFIGURAÇÕES EXPORTAÇÃO .......................................................................................................................................................... 42 COMPLETE, IMPORT AND EXPORT SETTINGS WIZARD ............................................................................... 43 WALKTHROUGHS VISUAL C# ........................................................................................................................... 44 EXPLICAÇÃO PASSO A PASSO: CRIANDO UM XML WEB SERVICES USANDO VISUAL BASIC OU VISUAL C# ........... 44 PASSO-A-PASSO: ACESSANDO UM XML WEB SERVICES UTILIZANDO VISUAL BASIC OU VISUAL C# ..................... 48 UM COMPONENTE COM VISUAL C# WALKTHROUGH: CRIAÇÃO .............................................................................. 53 TAREFAS COMUNS USANDO MARCAS INTELIGENTES EM CONTROLES FORMS WINDOWS FAZENDO WALKTHROUGH: ................................................................................................................................................................................ 57 COLEÇÕES DOS TIPOS PADRÃO COM O DESIGNERSERIALIZATIONVISIBILITYATTRIBUTE SERIALIZING WALKTHROUGH:..................................................................................................................................................... 58 WALKTHROUGH: DEPURAÇÃO CONTROLES FORMS DO WINDOWS PERSONALIZADOS EM TEMPO DE DESIGN ........... 61 CRIANDO UM CONTROLE DO WINDOWS FORMS QUE TAKES ADVANTAGE DOS RECURSOS DE TEMPO DE DESIGN VISUAL STUDIO WALKTHROUGH:............................................................................................................................ 64 UM CONTROLE COMPOSTO COM VISUAL C# WALKTHROUGH: CRIAÇÃO ................................................................. 84 UM COMPONENTE MULTITHREADED SIMPLE COM VISUAL C# WALKTHROUGH: CRIAÇÃO ..................................... 92
Visual Studio
1
WALKTHROUGH: INHERITING A PARTIR DE UM CONTROLE DO WINDOWS FORMS COM VISUAL C# ...................... 100 EXPLICAÇÕES PASSO-A-PASSO DO VISUAL STUDIO .............................................................................. 104 WALKTHROUGHS DE APLICATIVOS CLIENTE RICH ................................................................................................ 104 WALKTHROUGH: CRIANDO UM APLICATIVO CLIENTE RICH COM MFC ................................................................. 105 WALKTHROUGHS APPLICATION DE FORMULÁRIOS DA WEB ........................................................... 114 EXPLICAÇÃO PASSO A PASSO: CRIANDO UMA PÁGINA WEB BÁSICA NO VISUAL WEB DEVELOPER.......................................................................................................................................................... 115 PASSO-A-PASSO: ACESSO A DADOS BÁSICO EM PÁGINAS DA WEB................................................... 124 PASSO-A-PASSO: LIGAÇÃO DE DADOS PARA UM OBJETO CORPORATIVO PERSONALIZADO . 134 EXPLICAÇÃO PASSO A PASSO: DEPURAÇÃO DE PÁGINAS DA WEB NO VISUAL WEB DEVELOPER.......................................................................................................................................................... 141 PASSO-A-PASSO: CRIANDO E USANDO PÁGINAS MESTRAS DO ASP.NET NO VISUAL WEB DEVELOPER.......................................................................................................................................................... 148 PASSO-A-PASSO: PERSONALIZANDO UM SITE USANDO TEMAS NO VISUAL STUDIO.................. 159 EXPLICAÇÃO PASSO A PASSO: CRIANDO UMA PÁGINA WEB PARTS NO VISUAL WEB DEVELOPER.......................................................................................................................................................... 165 EXPLICAÇÃO PASSO A PASSO: CRIANDO UM SITE WEB COM ASSOCIAÇÃO E LOGIN DE USUÁRIO (VISUAL STUDIO) ............................................................................................................................. 175 PASSO-A-PASSO: CRIANDO E USANDO UM SERVIÇO DA WEB ASP.NET NO VISUAL WEB DEVELOPER.......................................................................................................................................................... 188 CRIANDO E ACESSANDO EXPLICAÇÕES PASSO A PASSO DE XML WEB SERVICES ..................... 196 EXPLICAÇÃO PASSO A PASSO: CRIANDO UM XML WEB SERVICES USANDO VISUAL BASIC OU VISUAL C#.............................................................................................................................................................. 197 PASSO-A-PASSO: CRIANDO UM XML WEB SERVICE USANDO C++ E O CLR .................................... 202 WALKTHROUGH: CRIANDO UM SERVIÇO DA WEB XML USANDO ATL SERVER.......................... 207 PASSO-A-PASSO: ACESSANDO UM XML WEB SERVICE USANDO C++ E O CLR............................... 211 PASSO-A-PASSO: ACESSANDO UM XML WEB SERVICE USANDO C++................................................ 215 PASSO-A-PASSO: CRIANDO UM APLICATIVO DISTRIBUÍDO ................................................................ 220 CONTROLE DE CÓDIGO FONTE PARA O VISUAL STUDIO..................................................................... 228 INTRODUÇÃO AO CONTROLE DE ORIGEM ............................................................................................................... 228 O QUE HÁ DE NOVO NO CONTROLE DE ORIGEM PARA O VISUAL STUDIO ............................................................... 235 EXECUÇÃO DE TAREFAS DE CONTROLE DE ORIGEM ............................................................................................. 236 COMO: ADICIONAR UM PROJETO AO CONTROLE DE ORIGEM ................................................................................ 236 COMO: ACOPLAR OU DESACOPLAR UMA SOLUÇÃO OU PROJETO .......................................................................... 237 COMO: ALTERAR O LOCAL DA PASTA DE TRABALHO ........................................................................................... 238 COMO CONECTAR OU DESCONECTAR UMA SOLUÇÃO OU UM PROJETO ................................................................... 238 COMO: COPIAR UM ITEM SOB CONTROLE DE ORIGEM ........................................................................................... 239 COMO: EXCLUIR UM ITEM CONTROLADO POR ORIGEM ......................................................................................... 240 COMO ATIVAR RECUPERAÇÃO AUTOMÁTICA......................................................................................................... 240 COMO DESATIVAR A CRIAÇÃO DA PASTA .ROOT ...................................................................... 241 COMO: ATIVAR CHECK-INS AUTOMÁTICOS ......................................................................................................... 241 COMO: DESATIVAR CHECK-OUTS AUTOMÁTICOS ................................................................................................. 242 COMO: ATIVAR OU DESATIVAR CONTROLE DE ORIGEM........................................................................................ 242 COMO: EXCLUIR UM ARQUIVO DE CONTROLE DE ORIGEM .................................................................................... 243 COMO: MOVER UMA RAIZ DE LIGAÇÃO DE PROJETO ............................................................................................ 243 COMO: MOVER UM ITEM CONTROLADO POR FONTE ............................................................................................. 244 COMO: ABRIR UM PROJETO OU SOLUÇÃO DO CONTROLE DE ORIGEM ................................................................... 244 COMO: RENOMEAR UM ITEM CONTROLADO POR ORIGEM .................................................................................... 245 COMO: DEFINIR OPÇÕES DE PLUG-IN.................................................................................................................... 246 COMO: TROCAR PLUG-INS DE CONTROLE DE ORIGEM:........................................................................................... 247 COMO: EXIBIR UMA LISTA DE ARQUIVOS COM CHECK-OUT.................................................................................. 247 REFERÊNCIA A INTERFACE DO USUÁRIO DO CONTROLE DE ORIGEM...................................................................... 247
Visual Studio
2
CAIXA DE DIÁLOGO CHANGE SOURCE CONTROL .................................................................................................. 247 CAIXA DE DIÁLOGO CHECK IN (CONTROLE DE CÓDIGO FONTE) ........................................................................... 249 CHECK-OUT PARA A CAIXA DE DIÁLOGO EDIT (CONTROLE DE ORIGEM)................................................................ 250 CAIXA DE DIÁLOGO GET (CONTROLE DE ORIGEM)................................................................................................. 251 JANELA DE CHECK-INS PENDENTES ....................................................................................................................... 252 GUIAS DE PLUG-IN PARA CONTROLE DE ORIGEM (CAIXA DE DIÁLOGO OPTIONS)................................................... 253 CAIXA DE DIÁLOGO SOURCE CONTROL ................................................................................................................. 256 CAIXA DE DIÁLOGO UNDO CHECKOUT (CONTROLE DE CÓDIGO FONTE)............................................................... 257 CONFIGURAÇÕES DO VISUAL STUDIO ........................................................................................................ 259 COMO: ALTERAR CONFIGURAÇÕES SELECIONADAS .............................................................................................. 260 TRABALHANDO COM CONFIGURAÇÕES.................................................................................................................. 261 COMO: COMPARTILHAR CONFIGURAÇÕES ENTRE COMPUTADORES ..................................................................... 261 COMO: ESPECIFICAR CONFIGURAÇÕES PARA UMA EQUIPE .................................................................................... 263 IMPORT AND EXPORT SETTINGS WIZARD.............................................................................................................. 263 ESCOLHA CONFIGURAÇÕES PARA EXPORTAR, IMPORTAR E EXPORTAR CONFIGURAÇÕES ASSISTENTE .................. 264 NOMEIE O ARQUIVO DE CONFIGURAÇÕES, IMPORTAR E EXPORTAR CONFIGURAÇÕES ASSISTENTE ....................... 264 SALVAR CONFIGURAÇÕES ATUAIS, IMPORTAR E ASSISTENTE PARA EXPORTAÇÃO CONFIGURAÇÕES ..................... 264 ESCOLHA CONFIGURAÇÕES PARA IMPORTAR, IMPORTAR E ASSISTENTE CONFIGURAÇÕES EXPORTAÇÃO ............. 265 ESCOLHA UM COLEÇÃO DE CONFIGURAÇÕES PARA IMPORTAR, IMPORTAR E ASSISTENTE CONFIGURAÇÕES EXPORTAÇÃO ........................................................................................................................................................ 265 COMPLETE, IMPORT AND EXPORT SETTINGS WIZARD ............................................................................. 266 GERENCIAR SOLUÇÕES, PROJETOS E ARQUIVOS................................................................................... 267 INTRODUÇÃO AO SOLUÇÕES, PROJETOS, E ITENS ................................................................................................... 267 PROPRIEDADES DE PROJETO (VISUAL STUDIO) ..................................................................................................... 269 GERENCIANDO PROPRIEDADES DE PROJETO COM O DESIGNER DE PROJETO ........................................................... 269 GERENCIANDO PROPRIEDADES DE APLICATIVO ..................................................................................................... 269 COMO: ESPECIFICAR INFORMAÇÕES DE ASSEMBLY.............................................................................................. 269 COMO ALTERAR UM NOME DE CONJUNTO: ............................................................................................................ 269 COMO: ALTERAR O NAMESPACE PARA UM APLICATIVO ....................................................................................... 270 COMO: ALTERAR O TIPO DE APLICATIVO ............................................................................................................. 270 COMO: ALTERAR O OBJETO DE INICIALIZAÇÃO PARA UM APLICATIVO ................................................................ 271 COMO: ESPECIFICA UM ÍCONE DE APLICATIVO ..................................................................................................... 272 COMO: ATIVAR ESTILOS VISUAIS ........................................................................................................................ 272 COMO: ESPECIFICAR COMPORTAMENTO DE INSTÂNCIAS PARA UM APLICATIVO .................................................. 273 COMO: ATIVAR AUTENTICAÇÃO DE USUÁRIO PERSONALIZADA ........................................................................... 274 COMO: ESPECIFICAR O COMPORTAMENTO DE DESLIGAMENTO PARA UM APLICATIVO ......................................... 274 GERENCIANDO REFERÊNCIAS ................................................................................................................................ 275 REFERÊNCIAS DE PROJETO .................................................................................................................................... 275 SOLUCIONANDO PROBLEMAS DE REFERÊNCIAS QUEBRADAS ................................................................................. 276 COMO: ADICIONAR OU REMOVER REFERÊNCIAS NO VISUAL STUDIO .................................................................. 278 COMO: ADICIONAR OU REMOVER NAMESPACES IMPORTADOS............................................................................. 280 COMO: REMOVER REFERÊNCIAS NÃO USADAS ................................................................................................... 281 COMO: DEFINIR A PROPRIEDADE COPY LOCAL (COPIAR LOCALMENTE) DE UMA REFERÊNCIA ........................... 282 GERENCIANDO RECURSOS DE APLICATIVO ........................................................................................................... 283 COMO: ADICIONAR OU REMOVER RECURSOS....................................................................................................... 283 COMO: ADICIONAR OU REMOVER RECURSOS DE SEQÜÊNCIA DE CARACTERES ..................................................... 285 COMO: EDITAR RECURSOS .................................................................................................................................. 286 COMO: EDITAR RECURSOS QUE SÃO SEQÜÊNCIAS DE CARACTERES ..................................................................... 288 COMO: ASSOCIAR UM EDITOR COM UM TIPO DE RECURSO ................................................................................... 289 RECURSOS VINCULADOS VERSUS RECURSOS INCORPORADOS .............................................................................. 290 COMO: CRIAR RECURSOS INCORPORADOS ........................................................................................................... 291 COMO: IMPORTAR OU EXPORTAR RECURSOS ....................................................................................................... 291 GERENCIANDO DEFINIÇÕES DO APLICATIVO.......................................................................................................... 292 CONFIGURAÇÕES DE APLICATIVO.......................................................................................................................... 293 COMO: ADICIONAR OU REMOVER CONFIGURAÇÕES DE APLICATIVO ................................................................... 295 COMO: ACESSAR EVENTOS DE CONFIGURAÇÃO ................................................................................................... 296 GERENCIANDO PROPRIEDADES DE PROJETO C# E J#.............................................................................................. 297 COMO DEFINIR PROPRIEDADES DO PROJETO (C#, J#):............................................................................................ 297 COMO: DEFINIR O CAMINHO DE REFERÊNCIA (C#, J#)........................................................................................ 298 COMO: DEFINIR AS PROPRIEDADES DE COMPILAÇÃO (C#, J#) ............................................................................ 299 COMO: ESPECIFICAR EVENTOS DE COMPILAÇÃO ................................................................................................. 300
Visual Studio
3
COMO: ADICIONAR E REMOVER REFERÊNCIAS NO VISUAL STUDIO (C#, J#)........................................................ 300 LOCAL E PROJETOS DA WEB .................................................................................................................................. 301 PROPRIEDADES DE ARQUIVO ................................................................................................................................. 302 TIPOS DE ARQUIVOS E EXTENSÕES DE ARQUIVOS NO VISUAL BASIC, VISUAL C#, E VISUAL J#............................. 304 MODELOS DE PROJETO PADRÃO NO VISUAL STUDIO ............................................................................................. 310 COMO: RESTAURAÇÃO DE MODELOS DE PROJETO PADRÃO ................................................................................. 311 MODELO CLASS LIBRARY ..................................................................................................................................... 312 MODELO DE APLICATIVO DE CONSOLE .................................................................................................................. 312 MODELO EMPTY PROJECT ..................................................................................................................................... 312 MODELO DE BIBLIOTECA DE CONTROLES DA WEB ................................................................................................ 313 MODELO DE APLICATIVO WINDOWS ..................................................................................................................... 313 MODELO DE CONTROLE DE BIBLIOTECA DO WINDOWS ........................................................................................ 313 MODELO DE SERVIÇO DO WINDOWS ..................................................................................................................... 313 REFERENCIANDO NAMESPACES E COMPONENTES ................................................................................................. 313 REFERÊNCIAS DE PROJETO .................................................................................................................................... 314 SOLUCIONANDO PROBLEMAS DE REFERÊNCIAS QUEBRADAS ................................................................................. 314 CONVENÇÕES DE NOMENCLATURA PARA ARQUIVO DE RECURSO .......................................................................... 316 RECURSOS XML ................................................................................................................................................... 317 RECURSOS NÃO-XML........................................................................................................................................... 317 CONFIGURANDO APLICATIVOS USANDO PROPRIEDADES DINÂMICAS ..................................................................... 317 INTRODUÇÃO A PROPRIEDADES DINÂMICAS (VISUAL STUDIO).............................................................................. 317 PERSONALIZAR E AUTOMATIZAR O AMBIENTE DE DESENVOLVIMENTO .................................... 323 PERSONALIZAR O AMBIENTE DE DESENVOLVIMENTO ............................................................................................ 323 COMO: PERSONALIZAR AJUDA DINÂMICA ............................................................................................................. 324 COMO PERSONALIZAR BARRAS DE FERRAMENTAS VISUAL STUDIO (): .................................................................. 327 COMO INICIAR FERRAMENTAS NO VISUAL STUDIO: .............................................................................................. 329 COMO PERSONALIZAR A SEÇÃO DE NOTÍCIAS DA PÁGINA INICIAR:........................................................................ 331 COMO ALTERAR O ITEM EXIBIDO EM INICIAR BACKUP DO AMBIENTE DE DESENVOLVIMENTO DO:........................ 331 TRABALHANDO COM CONFIGURAÇÕES.................................................................................................................. 332 COMO: COMPARTILHAR CONFIGURAÇÕES ENTRE COMPUTADORES ..................................................................... 340 COMO: ALTERAR CONFIGURAÇÕES SELECIONADAS .............................................................................................. 342 COMO: ESPECIFICAR CONFIGURAÇÕES PARA UMA EQUIPE .................................................................................... 342 GERENCIAMENTO DE JANELA ................................................................................................................................ 343 TIPOS JANELA........................................................................................................................................................ 343 COMO: ORGANIZAR E ANCORAR JANELAS ........................................................................................................... 345 HOW TO: WINDOWS IDE DE LISTA E ARQUIVOS ACTIVE..................................................................................... 349 CAIXA DE DIÁLOGO DO WINDOWS VISUAL STUDIO ()........................................................................................... 350 CAIXA DE DIÁLOGO COLUNAS ............................................................................................................................... 351 CAIXA DE DIÁLOGO COLUNAS DE CLASSIFICAÇÃO ................................................................................................ 352 COMO: NAVEGAR DENTRO DO AMBIENTE DE DESENVOLVIMENTO INTEGRADO ................................................... 353 AUTOMAÇÃO E EXTENSIBILIDADE PARA VISUAL STUDIO...................................................................................... 353 ESTENDENDO O AMBIENTE VISUAL STUDIO .......................................................................................................... 353 O QUE HÁ DE NOVO NO EXTENSIBILIDADE E AUTOMAÇÃO DO VISUAL STUDIO 2005............................................. 354 NOVOS MEMBROS DE AUTOMAÇÃO PARA VISUAL STUDIO 2005 ........................................................................... 356 PRÁTICAS RECOMENDADAS PARA SEGURANÇA NA AUTOMAÇÃO .......................................................................... 368 O ESPECTRO DE AUTOMAÇÃO VISUAL STUDIO ...................................................................................................... 369 ESCOLHENDO A ABORDAGEM DE AUTOMAÇÃO ADEQUADA .................................................................................. 371 FUNCIONAL GRUPOS DE AUTOMAÇÃO ................................................................................................................... 372 ACESSANDO O MODELO DE AUTOMAÇÃO POR USANDO MACROS ........................................................................... 373 CRIANDO ADD-INS E ASSISTENTES ........................................................................................................................ 374 REFERÊNCIA CONJUNTOS DE AUTOMAÇÃO E O OBJETO DTE2............................................................................... 375 CONTROLAR PROJETOS E SOLUÇÕES...................................................................................................................... 376 CRIANDO E CONTROLLING AMBIENTE WINDOWS.................................................................................................. 377 COMO CRIAR E ANEXAR A OUTRA INSTÂNCIA DO VISUAL STUDIO: ....................................................................... 378 INTRODUÇÃO À EXTENSIBILIDADE DE PROJETO ..................................................................................................... 383 BEM-VINDO AO ASSISTENTE SUPLEMENTO, ASSISTENTE PARA ADICIONAR-IN VISUAL STUDIO ........................... 386 VISUAL STUDIO COMANDOS E OPÇÕES...................................................................................................... 389 JANELA DE COMANDO........................................................................................................................................... 391 JANELA IMMEDIATE .............................................................................................................................................. 393 LOCALIZAR / COMANDO CAIXA ............................................................................................................................. 395 COMANDOS GUIA, PERSONALIZAR CAIXA DE DIÁLOGO VISUAL STUDIO ()............................................................ 396
Visual Studio
4
Visual Studio
5
Controle de Código Fonte para o Visual Studio Sem sair do ambiente de desenvolvimento, você pode gerenciar seus projetos individuais e de equipe facilmente usando os recursos do controle de código fonte do Microsoft Visual Studio. O controle de código fonte do Visual Studio permite que você: •
Gerencie o acesso ao banco de dados. O controle de código fonte do Visual Studio fornece suporte ao acesso de arquivos compartilhados e individuais. Também provê mecanismos para mesclagem de arquivos.
•
Recuperar versões sucessivas de itens sob controle de versão. A maioria dos pacotes do controle de código fonte do Visual Studio armazenam dados que distinguem as diferentes versões de um item sob controle de versão.
•
Manter o histórico detalhado dos itens sob controle de versão. Muitos pacotes fornecem mecanismos para armazenar e recuperar o histórico de um item, por exemplo, data e hora de criação.
•
Trabalhar de modo colaborativo em projetos e soluções. Com o compartilhamento de arquivos, é possível que diferentes projetos e soluções compartilhem o mesmo item sob controle de versão. Alterações feitas em um item compartilhado são refletidas em todos os projetos e soluções.
•
Automatizar as operações de controle de código fonte mais comuns. Por exemplo, um pacote do controle de de código fonte do Visual Studio pode definir uma interface de linha de comando que ofereça suporte a recursos importantes do controle de código fonte. Você pode usar essa interface em arquivos em lotes para automatizar as tarefas de controle de código fonte executadas regularmente.
•
Recuperar exclusões acidentais. O controle de código fonte do Visual Studio fornece suporte a restauração da última versão do arquivo em que foi realizado o check-in.
•
Economizar espaço em disco no pacote do controle de código fonte e no servidor associado.
Introdução ao controle de origem O Visual Studio oferece suporte ao controle de origem usando a camada Visual Studio Integration Protocol (VSIP) no seu Integrated Development Environment (IDE). VSIP pode hospedar uma variedade de pacotes de controle de origem, geralmente implementados como plug-ins escritos para os protocolos apropriados. Um exemplo de um plug-in de controle de origem é o plug-in SourceSafe LAN suportado pelo Visual SourceSafe. Para obter detalhes do plug-in, consulte a ajuda do Visual SourceSafe. Observação O Visual Studio trata pacotes de controle de origem como plug-ins, embora eles possam ser implementados como outros tipos de módulos de software.
Visual Studio
6
O controle de origem do Visual Studio é simplesmente um ambiente para plug-ins de controle de origem de terceiros. Por isso, sua funcionalidade só é ativada pela instalação de um plug-in. Para usar um plug-in de controle da origem de terceiros, você deve, geralmente, instalar o aplicativo de terceiros e/ou o(s) plug-in(s) de controle de origem nos computadores cliente e servidor para seu site. Depois de instalar como indicado pelas instruções de terceiros, sua funcionalidade estará disponível através do Visual Studio. As operações que estão ativas são variáveis, dependendo do plug-in de controle de origem. Você deve consultar a documentação de terceiros para detalhes operacionais de pacotes específicos. Consulte "Visão Geral (controle de origem)" na ajuda do Visual Studio para obter detalhes de design de controle de origem no Visual Studio. Esta seção da Ajuda também fornece todas as informações que serão necessárias para desenvolver um pacote de controle de origem de terceiros que seja compatível com Visual Studio. Noções básicas de controle de origem suportados pelo Visual Studio O suporte de controle de origem básico no Visual Studio inclui a configuração de plug-in de controle de origem e opções de ambiente, comutação de plug-in, acesso ao banco de dados, versionamento e manipulação de projetos do Visual Studio, soluções e arquivos e metadados associados. O controle de origem no Visual Studio também aplica protocolos do controle de acessos ao banco de dados, por exemplo, o estilo de trabalho Lock-Modify-Unlock, no qual um usuário que quer modificar um arquivo deve verificá-lo exclusivamente. É importante lembrar que você deve usar controle de origem em mecanismos do Visual Studio para interagir com um plug-in de controle de origem. Não use outras aplicações de cliente apresentadas por terceiros que forneçam o plug-in, por exemplo, Visual SourceSafe Explorer. O uso apropriado dos mecanismos de controle de origem no Visual Studio garante que somente arquivos corretos sejam adicionados ao controle de origem e que os arquivos de projeto e solução do Visual Studio sejam atualizados com os detalhes corretos do plug-in específico. Configuração de Plug-in de Controle de Origem e Comutação O controle de origem do Visual Studio suporta configuração e comutação de plug-in através da entrada Source Control na caixa de diálogo Options. Esta entrada é acessível selecionando-se Options no menu Tools do Visual Studio. Você usará a caixa de diálogo Options para selecionar o plug-in que você deseja utilizar para controle de origem, e configurar as opções de ambiente para o plug-in. Antes que você e sua equipe possam aproveitar as vantagens dos recursos de controle de origem no Visual Studio IDE, você deve: •
Determinar se qualquer plug-in de controle de origem está disponível.
•
Se o plug-in de controle de origem que você deseja usar não estiver instalado em seu computador, instale o produto de terceiros que ofereça suporte ao plug-in e reinicie o Visual Studio para registrá-lo.
•
Criar um banco de dados de controle de origem de acordo com a funcionalidade do determinado plug-in.
•
Envie um link, com o local do banco de dados, para todos os membros da equipe.
Acesso ao Banco de dados Comandos básicos de acesso ao banco de dados, por exemplo, Check Out e Add to Source Control, estão disponíveis no menu File do Visual Studio. No entanto, esses comandos são ativados somente depois que você tiver escolhido o plug-in de
Visual Studio
7
controle de origem que deseja usar. Quando você usa um dos comandos básicos de acesso ao banco de dados, o plug-in que você tiver escolhido chama a correspondente funcionalidade de terceiros e/ou o ambiente para concluir a operação associada. Algumas operações de acesso são ativadas somente com o plug-in selecionado, enquanto outras operações estão somente disponíveis quando você também tiver selecionado um projeto do Visual Studio, solução, ou arquivo no Solution Explorer do Visual Studio. Por exemplo, você pode usar um comando Add to Source Control depois de ter escolhido um plug-in. Entretanto, para usar um comando Check In, você deve ter um item selecionado no Solution Explorer. Manipulação de arquivo pelo controle de origem Você pode adicionar os seguintes arquivos ao controle de origem do Visual Studio: •
Arquivos de solução (*.SLN).
•
Arquivo de projeto, por exemplo, arquivos *.csproj, *.vbproj.
•
Arquivos de configuração de aplicativos com base em XML, usados para controlar comportamento em tempo de execução de um projeto do Visual Studio. Arquivos que você não pode adicionar ao controle de origem incluem o seguinte:
•
Arquivos de opção de solução de usuário (*.suo).
•
Arquivos de opção de projeto de usuários, por exemplo, arquivos *.. csproj.user, *. vbproj.user
•
Arquivos de informação da Web, por exemplo, *.csproj.webinfo, *. vbproj.webinfo, que controlam o local da raiz virtual de um projeto da Web
•
Criar arquivos de saída, por exemplo, arquivos *.dll e *.exe.
A propagação da alteração do espaço para nome O controle de origem do Visual Studio oferece suporte à propagação de alteração do espaço para nome em plug-ins controle de origem. Propagação de alteração aplica-se a operações de exclusão, renomeação e mudança de local. Quando você solicitar uma operação para qual a propagação de alteração estiver ativada, o plugin de controle de origem irá alterar a cópia de trabalho do item controlado por fonte, a cópia principal no banco de dados, e as cópias de outros usuários, quando você fizer o check-in no item e os outros usuários o recuperarem. Como Controle de Origem Trata Soluções e Projetos Quando você adiciona uma solução ou projeto ao controle de origem, a primeira coisa que um plug-in de controle de origem deve fazer é identificar uma raiz única para o item que está sendo adicionado. Esta raiz é um caminho ao diretório pai de todas as pastas de trabalho e arquivos que compõem a solução ou projeto. Uma raiz única geralmente mapeia para um caminho físico no disco. Contudo, se uma solução contém arquivos ou projetos que residem em mais de uma unidade de disco, não há nenhuma pasta física à qual uma raiz única pode fazer o mapa. Uma solução pode mapear a unidade de disco, mas a raiz única de um controle de origem, não. Para apoiar esta situação, o controle de origem do Visual Studio apóia o conceito de uma raiz super-unificada. Este tipo da raiz é um contêiner virtual e
Visual Studio
8
todos os projetos e os arquivos em uma solução controlada por fonte estão localizados abaixo dele. Quando você adiciona uma solução usando um plug-in de controle de origem com recursos avançados, o plug-in cria uma pasta raiz vazia de solução no banco de dados. Esta pasta conterá todos os itens em uma solução controlada por fonte. Por padrão, essa pasta é < nomedasolucao >.root. Observação Quando você adicionar um projeto único ao controle de origem, a pasta .root não será criada. O uso de solução raiz oferece os seguintes benefícios: •
Menos prompt. A solução raiz minimiza o número potencial de ligações de controle de origem para uma solução e, assim, minimiza o número de avisos aos usuários quando você adiciona uma solução para controle de origem e executa outras tarefas.
•
Encapsulamento do projeto. A solução raiz garante que todos os projetos em uma solução possam ser identificados como pertencentes ao mesmo conjunto, mesmo quando uma ou mais projetos residam em diferentes partições ou computadores.
Você pode desativar a criação de pasta < nomedasolucao >.root, mas isso não é recomendável. Para mais informações, consulte COMO: desativar a criação da pasta < nomedasolucao>.root. Soluções no Visual Studio são bem-formadas ou não. Uma solução bem-formada é uma solução para a qual a estrutura hierárquica no disco combina com a sua estrutura no Solution Explorer. Todos os projetos em uma solução bem-formada são armazenados em subpastas da pasta solução no disco. Se a solução é bemformada quando você a adiciona ao controle de origem, o plug-in do controle de origem cria uma pasta abaixo da pasta *.root para conter as cópias principais de arquivo de solução (*.sln) e arquivos de opção de solução de usuários (*.suo) para a solução. Finalmente, o plug-in de controle de origem cria uma pasta sob a pasta .sln para cada projeto adicional no banco de dados do controle de origem. Se uma solução não é bem-formada, o plug-in do controle de origem cria uma pasta para a solução e para o seu projeto inicial. Em seguida, as pastas para cada projeto adicional são criadas em paralelo com a pasta de solução. Modos de exibição de uma solução ou projetos Visual Studio fornece três modos diferentes de exibição de uma solução controlada por origem ou projeto: design, controle de origem, e físico. Muitas tarefas de controle de origem são mais fáceis de executar quando não há um mapeamento um-para-um entre os elementos individuais desse modo de visualização. Contudo, se você criar as suas soluções e projetos e os acrescentar ao controle de origem usando as configurações padrões do Visual Studio, suas soluções e projetos não serão, necessariamente, organizados do mesmo modo no disco como eles estão no Solution Explorer e no banco de dados. O modo design de uma solução ou projeto, que você vê no Solution Explorer, é um retrato lógico do conteúdo de uma solução ou projeto. Geralmente, o modo design é limpo e significativo. Arquivos desnecessários estão ocultos e arquivos de vários locais físicos diferentes são colocados em um contêiner de projeto único.
Visual Studio
9
O modo de controle de origem de uma solução ou projeto, que você vê em um aplicativo autônomo, como Visual SourceSafe Explorer, é também um modo de exibição lógico de uma solução ou projeto. Entretanto, o modo de exibição de controle de origem não é, necessariamente, um reflexo do modo de exibição lógico. O modo de exibição físico de uma solução ou projeto, que você vê no Windows File Explorer, provavelmente não refletirá a estrutura hierárquica da lógica ou visão do controle de origem. As diretrizes a seguir podem ajudá-lo a obter fidelidade organizacional entre o modos de exibição de design, físico e controle de origem de suas soluções controladas por fonte e projetos: •
Primeiro, crie uma solução em branco e adicione projetos a ela. Isso o ajuda a manter a relação lógica pai-filho entre uma solução e seus projetos no armazenamento. Em seguida, quando você adicionar a solução ao controle de origem, o modo de exibição de controle de origem e design irá espelhar a hierarquia da solução no disco.
•
Atribua a cada solução um nome exclusivo e descritivo que se diferencia do nome de cada um dos projetos contidos.
•
Evite adicionar arquivos de link para uma solução ou projeto controlado por fonte origem.
•
Se possível, armazene todos os arquivos de uma solução ou projeto em uma unidade de disco.
Conexões de controle de origem e ligações O Visual Studio define uma conexão como uma ligação de dados ativa entre o Visual Studio e um servidor de banco de dados. Quando você adiciona uma solução ou projeto ao controle de origem, o plug-in de controle de origem copia o item e todo o seu conteúdo do disco para o banco de dados. Uma pasta controle de origem é criada para cada pasta que contém um arquivo solução ou projeto. Após adicionar o item, o plug-in de controle de origem vincula sua cópia de trabalho local de uma solução ou projeto à sua versão no banco de dados. Cada solução controlada por origem tem, pelo menos, uma ligação de controle de origem. No entanto, um item pode ter várias ligações e requerer várias conexões com o banco de dados. O número de vínculos e conexões depende de como você cria a solução inicialmente e se seus projetos e arquivos estão todos salvos na mesma partição. Como um exemplo de vínculos e conexões, pense em uma solução bem formada de controle de origem, com vários projetos, como uma casa com várias salas. Quando você constrói a casa, você pode instalar uma linha de dados única de alta velocidade de uma sala à rua. Você instala um roteador atrás de um firewall para distribuir a alimentação de dados para outras salas e você paga um provedor de serviços de Internet para conectar sua casa com a Internet. Você pode pensar em vínculo de controle de origem como representação da linha de dados única criada para a casa. Quando você abre uma solução controlada por fonte, uma conexão é criada através dessa ligação. A conexão estabelece um 'aperto de mão' entre a sua cópia de trabalho da solução no disco e a cópia mestra da solução no banco de dados. Se uma solução controlada por origem não for bem formada, você pode vê-la como uma casa na qual cada sala é unida à Internet diretamente. Tarifas de Internet são mais caras do que as da casa de conexão única, os custos de manutenção são
Visual Studio
10
superiores, e mudar para um provedor de serviços de Internet diferente é muito mais difícil e demorado. Idealmente, uma solução e seu projeto compartilham uma ligação de controle de origem única. Soluções Single-Binding são mais gerenciáveis do que soluções Multiple-Binding. Elas tornam mais fácil: •
Desconectar do controle de origem para trabalhar off-line.
•
Conectar-se ao banco de dados após a reconexão com a rede.
•
Ramificar em uma etapa.
Você pode criar uma solução de multiprojeto com uma ligação única, criando uma solução em branco antes de adicionar seus projetos. Você também pode fazer isso, selecionando a opção Create Directory for Solution na caixa de diálogo New Project, ao criar um par de solução de multiprojeto. Se você criar um par de solução de multiprojeto em uma etapa e não selecionar a opção Create Directory for Solution na caixa de diálogo New Project (desativado por padrão), uma segunda ligação será criada quando você adicionar um segundo projeto à solução. Uma ligação é criada para o projeto inicial e para a solução. Ligações adicionais são criadas para cada projeto adicional. Terminologia de controle de origem A documentação do Visual Studio usa um número de termos para descrever recursos e conceitos de controle de origem. A tabela a seguir define alguns dos termos comuns. Versão base A versão do servidor de um arquivo do qual uma versão local é derivada. Vinculação Informação que correlaciona uma pasta de trabalho de uma solução ou projeto no disco à pasta no banco de dados. Ramificação Processo de criar uma nova versão, ou ramificação, de um arquivo compartilhado ou projeto sob controle de origem. Uma vez que uma ramificação tenha sido criada, as duas versões sob controle de origem terão um histórico compartilhado até um determinado ponto e históricos divergentes após esse ponto. Conflito Duas ou mais alterações diferentes para a mesma linha do código em situações em que dois ou mais desenvolvedores tenham feito o check-out e editado o mesmo arquivo. Conexão Uma ligação de dados ativa entre um cliente do controle de origem (por exemplo, Visual Studio) e um servidor de banco de dados do controle de origem. Banco de dados Local onde todas as cópias mestre, histórico, estruturas de projeto e informações do usuário são armazenados. Um projeto sempre está contido em um banco de dados. Vários projetos podem ser armazenados em um banco de dados, e vários bancos de dados podem ser usados. Outros termos
Visual Studio
11
normalmente usados para um banco de dados são repositório e armazenamento. Histórico Registro de alterações de um arquivo desde que ele tenha sido adicionado, inicialmente, no controle de origem. Com o controle de versão, você pode retornar a qualquer ponto no histórico do arquivo e recuperar o arquivo como ele existia até esse momento. Rótulo Nome definido pelo usuário anexado a uma versão específica de um item controlado por fonte. Cópia local Arquivo em uma pasta de trabalho do usuário para a qual são copiadas alterações antes que seja feito um check-in. Uma cópia local é, às vezes, chamada de uma cópia de trabalho. Cópia mestra A versão mais recente do check-in de um arquivo controlado por fonte, em oposição à cópia local de um arquivo em sua pasta de trabalho. Outros termos para cópia mestra são versão do servidor e versão do banco de dados. Mesclar Processo de combinar diferenças entre duas ou mais versões modificadas de um arquivo em uma nova versão de arquivo. Mesclar pode afetar diferentes versões do mesmo arquivo ou alterações feitas a uma mesma versão do arquivo. Arquivo compartilhado Um arquivo com versões que residem em mais de uma localidade de controle de origem. Outros termos para um arquivo compartilhado são cópia e atalho. Raiz solução Uma pasta vazia em um banco de dados que contém todos os itens de uma solução controlada por origem. Por padrão, essa pasta é < nomedasolucao >.root. Raiz Super-unificada Um contêiner virtual abaixo do qual todos os projetos e os arquivos em uma solução controlada por origem estão localizados. Por exemplo [SUR]: \. é a raiz super-unificada de uma solução controlada por origem contendo projetos localizados em [SUR]:\C:\Solucao\Proj1 e [SUR]:\D:\Proj2. Raiz unificada Um caminho para a pasta pai de todas as pastas de trabalho e arquivos em uma solução ou projeto controlado por origem. Por exemplo, C:\Solucao é a raiz unificada de uma solução controlada por origem contendo arquivos localizados em C:\Solucao, C:\Solucao\Proj1 e C:\Solucao\Proj2. Pasta de trabalho Local no qual as cópias locais de itens controlados por origem são armazenados, geralmente no seu próprio computador. Outro termo para uma pasta de trabalho é espaço de trabalho.
Visual Studio
12
O que há de novo no controle de origem para o Visual Studio O Visual Studio tem dado suporte a controle de origem e integração de plug-ins de controle de origem há algum tempo. Entretanto, a versão atual inclui um número de aperfeiçoamentos de integração. Para informações sobre novos recursos da parte de controle de origem do SDK do ambiente Visual Studio, consulte "Novidades para controle de origem" Alternância de plug-in Controle de origem agora permite alternar entre todos os tipos de plug-ins de controle de origem em Options no menu Tools. Esta alternância permite a substituição completa da interface do usuário e permite um plug-in por solução. Melhorias no acesso ao projeto via aberturas assíncronas Controle de origem do Visual Studio foi aprimorado para abrir soluções de forma assíncrona e refletir o progresso de uma operação de abertura modificando os ícones no Solution Explorer. O recurso de abertura assíncrona marca projetos que ainda estão sendo baixados com uma ampulheta, e marca projetos totalmente baixados para acesso assim que eles estiverem disponíveis. Isso significa que você pode abrir e começar a trabalhar em um projeto mesmo que o Visual Studio esteja ainda abrindo os outros projetos na solução. Observação Este recurso está apenas disponível para Visual Basic, C#, J# e projetos da Web e não possui suporte de todos os plug-ins de controle de origem. Melhorias na caixa de diálogo do Visual Studio para dar suporte a controle de origem Os seguintes aperfeiçoamentos de acesso a arquivo foram feitos nas caixas de diálogo do Visual Studio: •
Agora você pode adicionar projetos ao controle de origem e abri-los facilmente usando a nova guia Source Control Stores na caixa de diálogo Open Project.
•
Você pode adicionar um arquivo existente do controle de origem a um projeto usando a caixa de diálogo Add Existing Item.
•
Você pode adicionar automaticamente soluções e projetos ao controle de origem marcando a caixa de seleção Add to Source Control na caixa de diálogo New Project.
Sincronização de exclusões, renomeações e movimentações Para oferecer suporte a propagação de alteração de namespace, a versão mais recente de controle de origem sincroniza exclusões, renomeações, e movimentações com o banco de dados. Quando você fizer uma alteração você será solicitado a propagar a alteração, enquanto outros usuários poderão sincronizar através de operações de recuperação. Em versões anteriores, se você excluía, renomeava ou movia um item no servidor, ele permanecia na sua pasta de trabalho mesmo após a sincronização. Melhorias nas operações básicas de controle de origem
Visual Studio
13
Os seguintes aperfeiçoamentos foram feitos nas operações básicas de controle de origem do Visual Studio: •
Você pode agora fazer um check-out de um arquivo de uma pasta de trabalho local sem precisar baixar pela rede a versão mais recente do arquivo no banco de dados.
•
Agora checkouts são automáticos e número de solicitações é reduzido.
•
Você tem uma opção para configurar o Visual Studio para automaticamente obter do controle de origem a última versão de todos os itens da solução quando você abrir uma solução .
•
Você pode configurar o Visual Studio para fazer silenciosamente check-out de arquivos em edição e fazer automaticamente check-in das suas alterações quando você fechar a solução.
Suporte ao Visual Web Developer O Visual Web Developer pode agora acessar recursos de controle de origem de projeto na Web, como baixar em qualquer local. Em versões anteriores do Visual Studio, o local estava embutido em código para baixar em c:\inetpub\wwwroot. Consulte também
Execução de Tarefas de Controle de Origem Esta seção descreve tarefas gerais de controle de origem que você pode executar no Visual Studio para qualquer plug-in. Operações básicas de controle de origem como check in, check out e exibição de histórico são amplamente específicas de plug-in, embora essas operações possam fazer uso de alguns dos elementos de interface de usuário padrão suportados pelo pacote de controle de origem do Visual Studio. Para tarefas de plug-in-específico, entretanto, você deve consultar a documentação do plug-in de controle de origem específico. Observação Muitos desses procedimentos referem-se à seleção de comandos básicos de controle de origem do menu File do Visual Studio. Alternativamente, você pode acessar muitos dos comandos clicando com o botão direito do mouse em um item controlado por fonte no Solution Explorer.
COMO: Adicionar um projeto ao controle de origem O controle de origem do Visual Studio permite adicionar um projeto e seu arquivo de solução ao controle de origem ao mesmo tempo. Se uma solução já estiver sob controle de origem, você pode adicionar um novo projeto a ela. Fazendo check-in de uma solução automaticamente coloca qualquer novos projetos que esta contém sob controle de origem. Para adicionar um projeto e solução ao controle de origem 1.
No Visual Studio, crie um novo projeto. Se você tiver dúvidas sobre como fazer isso, procure a Ajuda do Visual Studio.
2.
Selecione a solução que contém o novo projeto.
3.
No menu File, clique em Source Control.
Visual Studio
14
4.
Clique em Add Solution to Source Control e selecione a base de dados de projeto à qual quer adicionar a solução usando os procedimentos do plug-in de controle de origem sendo utilizado.
Para adicionar os projetos selecionados ao controle de origem 1.
No Visual Studio, abra uma solução existente no Solution Explorer.
2.
Crie novos projetos conforme necessário na solução. Se você tiver dúvidas sobre como fazer isso, há vários procedimentos na Ajuda do Visual Studio.
3.
Faça o check-out do arquivo de solução, pois o controle de origem precisa incluir os novos detalhes do projeto nesse arquivo. Use o procedimento de check-out específicos para o plug-in de controle de origem em uso.
4.
No menu File, clique em Source Control, e em seguida, clique em Add Selected Projects to Source Control
5.
Você será solicitado a decidir se deseja adicionar os projetos como subpastas da solução ou como pastas separadas. Na maioria das situações, você deve adicionar os projetos à pasta da solução no banco de dados.
6.
Faça o check-in da solução de volta no controle de origem, usando o procedimento de check-in específico para o plug-in de controle de origem em uso.
COMO: acoplar ou desacoplar uma solução ou projeto Você deve ligar uma solução ou projeto ao controle de origem de maneira que este item tenha acesso aos comandos básicos de controle de origem, tais como Check Out, Check In, e Get. Uma ligação associa a cópia local do item à cópia mestre no banco de dados. Desacoplar uma solução ou projeto controlado por origem remove o item do controle de origem, desassociando a cópia local da cópia mestre no banco de dados, e desativando todos os comandos de controle de origem. Talvez você precise desacoplar um item se: •
Você precisar religá-lo à versão de backup do banco de dados quando o servidor primário for desligado. Você pode conectar a um servidor de backup, religar a sua cópia da solução à cópia mestre do servidor no banco de dados de backup, e continuar trabalhando normalmente. Para mais informações, consulte COMO: conectar ou desconectar uma solução ou projeto.
•
Você desejar iniciar uma nova ramificação sem nenhum histórico de controle de origem em uma pasta de banco de dados diferente.
•
Você desejar utilizar um outro plug-in de controle de origem .
Desacoplar um item não o remove permanentemente do banco de dados. Para obter mais informações de como excluir um item, consulte COMO: excluir um item controlado por origem. Para ligar uma solução ou projeto ao controle de origem 1.
No Visual Studio, abra o Solution Explorer e selecione uma solução ou projeto a ser ligado.
2.
No menu File, clique em Source Control, depois em Change Source Control.
Visual Studio
15
3.
Na caixa de diálogo Change Source Control, clique em Bind.
4.
Selecione o banco de dados e local ao qual ligar, e clique em OK.
Para desacoplar uma solução ou projeto do controle de origem 1.
No Visual Studio, abra o Solution Explorer e selecione uma solução ou projeto a ser desacoplado.
2.
No menu File, clique em Source Control, depois em Change Source Control.
3.
Na caixa de diálogo Change Source Control, clique em Unbind.
4.
Clique em OK.
COMO: alterar o local da pasta de trabalho Às vezes o Solution Explorer indica locais de pasta por um sublinhado ondulado. Essas entradas representam caminhos inválidos relativos à pasta de trabalho. Para corrigir caminhos inválidos, você deve alterar o local da pasta de trabalho. Para alterar o local da pasta de trabalho 1. 2. 3. 4.
No Visual Studio, abra o Solution Explorer. Clique em um caminho inválido na coluna Enter Working Copy Location Here. Clique no botão de reticências (…) Digite um caminho válido, por exemplo, http:///pasta1, e clique em OK. Se a pasta ainda não existir, o Visual Studio criará uma.
Como conectar ou desconectar uma solução ou um projeto Conforme descrito em Introdução ao Controle de Código Fonte, uma solução no Visual Studio pode ter um ou mais vínculos com o controle de código fonte. Uma conexão é criada automaticamente sempre que um item é vinculado ao controle de código fonte conforme descrito em Como vincular ou desvincular uma solução ou um projeto. Pode-se criar uma conexão manualmente conforme descrito neste tópico. Se você desconectar seu computador da rede ou perder a conexão por alguma outra razão, você deve desconectar temporariamente os vínculos da solução a fim de editar os projetos e os arquivos nela contidos. Quando você desconecta uma solução do controle de código fonte, o único comando básico que você pode usar é o comando de check-out. Ao realizar o check-out de um item desconectado, a cópia local do item, contida na sua pasta de trabalho, torna-se editável. Quando for possível acessar o banco de dados novamente, você pode reconectar a solução e sincronizar sua cópia local com a cópia mestre mais recente. Procedimentos Para conectar uma solução ou um projeto ao controle de código fonte 1.
No Visual Studio, abra a janela Solution Explorer e selecione os itens a serem conectados.
Visual Studio
16
2.
No meu File , clique em Source Control e depois em Change Source Control.
3.
Na caixa de diálogo Change Source Control, clique em Connect.
4.
Clique em OK.
Para desconectar uma solução ou projeto de controle de código fonte 1.
No Visual Studio, abra a janela Solution Explorer e selecione os itens a serem desconectados.
2.
No menu File, clique em Source Control e depois em Change Source Control.
3.
Na caixa de diálogo Change Source Control, clique em Disconnect.
4.
Clique em OK.
COMO: copiar um item sob controle de origem Você pode copiar um projeto de uma solução sob controle de origem para outra, ou copiar um arquivo de um projeto sob controle de origem para outro. Quando você copia um item, uma nova ramificação é criada no banco de dados, junto com o histórico e outros metadados do item. Criar ramificações permite que sua equipe desenvolva duas versões de um produto simultaneamente e independentemente. Observação Se você copiar um projeto sob controle de origem para uma solução que não está sob controle de origem, não poderão ser criadas ramificações no projeto. Para copiar um projeto sob controle de origem 1. 2. 3.
No Visual Studio, abra o Solution Explorer. Clique com o botão direito do mouse na solução de destino no Solution Explorer. No menu File, clique em Add e depois em Existing Project.
4.
Na caixa de diálogo Add Existing Project, clique no nome de seu plug-in de controle de origem.
5.
Clique duas vezes no banco de dados contendo o projeto que você deseja copiar.
6.
Selecione o projeto, e clique em Add.
7.
Clique em OK.
Para copiar um arquivo sob controle de origem 1. 2.
3.
No Visual Studio, abra o Solution Explorer. Clique com o botão direito do mouse no projeto de destino no Solution Explorer. Este projeto deve estar no mesmo banco de dados que o projeto de origem. No menu File, clique em Add e depois em Existing Item.
Visual Studio
17
4.
Na caixa de diálogo Add Existing Item, clique no nome de seu plug-in de controle de origem.
5.
Clique duas vezes no banco de dados que contém o arquivo que você deseja copiar.
6.
Selecione o arquivo, e clique em Add.
7.
Clique em OK.
COMO: excluir um item controlado por origem Quando você exclui um item controlado por origem, o Visual Studio exclui automaticamente a cópia local, se o plug-in de controle de origem apoiar a propagação de modificação de espaço para nome. Caso contrário, ele o consultará para obter instruções sobre exclusão. Para mais informações sobre propagação de modificação de espaço para nome, consulte Introdução ao controle de origem. A maioria dos plug-ins para controle de origem para o Visual Studio não exclui permanentemente itens de um banco de dados. Para obter mais informações sobre como excluir permanentemente um item de controle de origem, consulte a documentação do produto de terceiros para seu plug-in. Para excluir um item controlado por origem 1. 2.
No Visual Studio, abra Solution Explorer. Clique com o botão direito do mouse no item que deseja excluir, depois clique Delete ou Remove.
Observação O comando Remove só estará disponível para projetos a base de referência, como projetos C++. 1.
Você será solicitado para fazer o check-out no item. Faça o check-out como apoiado pelo seu plug-in de controle de origem.
2.
Se tiver clicado em Remove, anteriormente, clique em Delete na caixa de diálogo que aparece.
3.
Na caixa de diálogo Source Control, clique em Delete the item(s) locally and in the source control store.
4.
Em Solution Explorer, faça o check-in do item como apoiado pelo seu plug-in de controle de origem.
5.
Notifique a exclusão a qualquer pessoa que possa ter feito o check-out do projeto ao qual o item excluído pertence.
6.
Se houver suporte para a propagação de modificação de espaço para nome, permita que os outros usuários façam a atualização de suas cópias locais. Eles receberão uma mensagem notificando-os da exclusão.
7.
Se não houver suporte à propagação de modificação de espaço para nome, você terá de informar aos outros usuários para removerem manualmente suas cópias locais do item excluído.
Visual Studio
18
Como ativar recuperação automática Você pode configurar o Visual Studio para recuperar automaticamente a versão mais recente de um item sob controle de versão sempre que você abri-lo. Isso garante que a cópia local permanecerá sincronizada com a cópia mestra. Procedimentos Para obter a versão mais recente automaticamente 1.
No Visual Studio, no menu Tools, clique em Options.
2.
Na caixa de diálogo Options, clique em Source Control e em seguida clique em Environment.
3.
Marque a caixa de seleção Get everything when a solution or project is opened.
4.
Clique em OK.
Como desativar a criação da pasta .root Quando você adiciona uma solução ao controle de código fonte, o respectivo plug-in cria automaticamente uma pasta < solutionname >.root vazia no banco de dados. Essa pasta irá conter a raiz unificada da solução. Para mais informações sobre a raiz unificada, consulte Introdução ao controle de código fonte. Cuidado Desativar a criação automática da pasta < solutionname >.root irá alterar o comportamento do plug-in sempre que uma solução com vários projeto for adicionada ao controle de código fonte. Por exemplo, operações que adicionam projetos levarão mais tempo para concluir. Além disso, você terá que responder a solicitações redundantes ao executar operações de controle de código fonte em vários projetos. Para desativar a criação automática da pasta < solutionname >.root 1. 2.
Na área de trabalho do Windows, clique em Start e, em seguida, clique em Run Digite Regedit e clique em OK.
3.
Abra \SourceControl HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\ < número de versão >.
4.
Selecione a chave DoNotCreateSolutionRootFolderInSourceControl e clique em Edit e depois em Modify.
5.
Na caixa de dados Value, troque 0 por 1.
6.
Clique em OK para aceitar a alteração do registro.
COMO: Ativar Check-ins automáticos Você pode configurar o Visual Studio para que efetue automaticamente check-in nas suas alterações no controle de origem quando você fechar uma solução.
Visual Studio
19
Automatizar o processo de check-in garante que seus trabalhos mais recentes se tornem periodicamente disponíveis para outros membros da equipe, mesmo se você esquecer fazer check-in manualmente. Para ativar checkins automáticos 1.
No Visual Studio, no menu Tools, clique em Options.
2.
Na caixa de diálogo Options, clique em Source Control, clique em Environment.
3.
Marque a caixa de seleção Check in everything when closing a solution or project.
4.
Clique em OK.
COMO: desativar check-outs automáticos O controle de origem no Visual Studio permite check-outs automáticos por padrão. Esta seção descreve como você pode configurar o Visual Studio para desativar check-outs automáticos. Procedimentos Para desativar check-outs automáticos 1.
No Visual Studio, no menu Tools, clique em Options.
2.
Na caixa de diálogo Options, clique em Source Control, e depois clique em Environment.
3.
Na caixa Editing, desmarque a caixa de seleção Check out automatically.
4.
Clique em OK.
COMO: ativar ou desativar controle de origem O controle de origem no Visual Studio estará disponível somente se um plug-in válido de controle de origem estiver instalado e registrado para ser usado em seu computador. O plug-in é registrado durante a instalação do software de terceiros. O Visual Studio usa esse registro para localizar os plug-ins e as localidade de seus bancos de dados padrão sempre que você abrir a IDE do Visual Studio. Ela lista todos os plug-ins disponíveis na aba Plug-in Selection da entrada Source Control na caixa de diálogo Options. Se você não tiver nenhum plug-in de controle de origem compatível instalado em seu computador, o controle de origem no Visual Studio não está ativado. Você não verá nenhuma entrada Source Control no menu File. Cuidado Você pode usar um plug-in de controle de origem no Visual Studio e o aplicativo autônomo de controle de origem correspondente para gerenciar o mesmo projeto ou solução. Entretanto, fazer check-outs de itens de ambos os programas para a mesma pasta de trabalho não é recomendável. Isso pode levar a situações em que soluções e projetos não podem ser acessados no controle de origem.
Visual Studio
20
Para ativar um determinado plug-in de controle de origem 1. 2.
No Visual Studio, no menu Tools, clique em Options. Na caixa de diálogo Options , clique em Source Control, clique em Plug-in Selection.
3.
Selecione o plug-in de controle de origem que deseja usar.
4.
Clique em OK.
Para desativar completamente o controle de origem 1. 2.
No Visual Studio, no menu Tools, clique em Options. Na caixa de diálogo Options, clique em Source Control, clique em Plug-in Selection.
3.
Selecione None na caixa Current source control plug-in.
4.
Clique em OK.
COMO: excluir um arquivo de controle de origem Se a solução em você estiver trabalhando contém arquivos que não requerem controle de origem, você pode utilizar o comando Exclude from Source Control para marcar adequadamente o arquivo. Quando você fizer isso, o arquivo permanecerá no banco de dados, mas não é mais realizado check-in ou check-out do mesmo a partir do projeto que o contém. Observação Arquivos gerados são excluídos do controle de origem por padrão. Um arquivo gerado é um que pode ser recriado inteiramente pelo Visual Studio, de acordo com o conteúdo de outro arquivo do Visual Studio. Para excluir um arquivo do controle de origem 1.
No Visual Studio, abra Solution Explorer e selecione o arquivo a ser excluído.
2.
No menu File, clique em Source Control, clique em Exclude from Source Control.
3.
Quando você estiver pronto para colocar o arquivo sob controle de origem, você pode acessar o menu File, clicar em Source Control e então desmarcar Exclude from Source Control.
COMO: mover uma raiz de ligação de projeto Você talvez necessite mover a raiz de ligação de um projeto se alguns arquivos que você deseja adicionar ao projeto estiverem localizados fora da raiz do projeto. Para mover uma raiz de ligação de projeto 1.
No Visual Studio, abra o Solution Explorer e selecione um projeto que contém arquivos que estejam fora da pasta da solução ou raiz do projeto.
Visual Studio
21
2. 3.
No menu File, clique em Source Control, depois em Change Source Control. Na caixa de diálogo Change Source Control, clique em Unbind.
4.
Na caixa de mensagem, clique em Unbind para confirmar que você deseja remover o projeto do controle de origem.
5.
Se a solução e o projeto compartilham uma ligação de controle de origem, desacople a solução também.
6.
Com o projeto selecionado, acesse novamente a caixa de diálogo Change Source Control e clique em Bind.
7.
Se solicitado, faça logon no seu banco de dados de controle de origem.
8.
Selecione a pasta pai na qual todos os arquivos no projeto estão armazenados. Na maioria dos casos, a pasta .root é esta pasta.
9.
Se você teve que desacoplar a solução juntamente com o projeto, você deve religá-la a uma pasta de banco de dados.
COMO: mover um item controlado por fonte No Visual Studio, você pode mover um item controlado por origem de uma pasta de projeto ou solução para outro. Quando você move um item, você move todo o histórico e metadados de controle de origem associados se o plug-in de controle de origem apoiar a propagação de modificação de espaço para nome. Tanto a origem quanto os itens de destino envolvidos em uma operação de mudança de local devem ser localizados no mesmo banco de dados de controle de origem. Para mais informações sobre propagação de modificação de espaço para nome, consulte Introdução ao controle de origem. Observação A operação de mudança só pode ocorrer entre dois projetos na mesma solução, ou entre duas soluções. Para uma mudança de local ser ativada, uma solução e seus projetos devem compartilhar uma vinculação de controle de origem. Para mais informações, consulte COMO: acoplar ou desacoplar uma solução ou projetos. Para mover um item controlado por origem 1. 2.
No Visual Studio, abra o Solution Explorer. Clique no item que você deseja mover e arraste-o para a solução ou projeto de destino no Solution Explorer.
COMO: abrir um projeto ou solução do controle de origem Quando você abre um projeto ou solução do controle de origem, o Visual Studio baixa a cópia mestra mais recente do item e de todos os arquivos contidos para a pasta de trabalho local. Depois que você recuperar uma cópia local do item, você não precisá abri-lo a partir do controle de origem novamente. Você pode continuar
Visual Studio
22
a usar os comandos de controle de origem para o seu plug-in específico de controle de origem. Cuidado Se você repetir um dos procedimentos neste tópico, você criará várias pastas de trabalho e várias instâncias dos arquivos que elas contêm. Para abrir um projeto ou solução do controle de origem 1.
No Visual Studio, no menu File, clique em Open.
2.
Clique em Project/Solution.
3.
Na caixa de diálogo Open Project , selecione Close Solution if not already selected.
4.
No lado esquerdo da caixa, clique em My Stores, e depois clique em Open.
5.
Procure e selecione o seu arquivo de projeto (*.proj) ou de solução (*.sln), altere a pasta de destino, e depois clique em Open.
6.
Se você já tiver uma cópia local da solução ou do projeto que você está abrindo do controle de origem, você será solicitado a substituir a cópia local de todos os arquivos e projetos na solução. Responda às perguntas conforme necessário.
Para abrir um projeto da Web do controle de origem 1.
No Visual Studio, no menu File, clique em Open.
2.
Clique em Web Site.
3.
Na caixa de diálogo Open Web Site, clique em My Stores, depois clique em Open.
4.
Procure e selecione o projeto da Web, altere a pasta de destino, e depois clique em Open.
5.
Se você já tiver uma cópia local do projeto da Web que você está abrindo do controle de origem, você será solicitado a substituir a cópia local de todos os arquivos e projetos na solução. Responda às perguntas conforme necessário.
COMO: Renomear um item controlado por origem Quando você renomeia um item controlado por origem, o Visual Studio renomeia a cópia local automaticamente se o plug-in de controle de origem suporta propagação da alteração de namespace. Caso contrário, ele consultará você para obter instruções de renomeação. Para mais informações sobre propagação de alterações de namespaces, consulte Introdução ao controle de origem. Para renomear um item de origem controlada 1. 2.
No Visual Studio, abra o Solution Explorer. Clique com o botão direito do mouse no arquivo a ser renomeado, clique Rename.
Visual Studio
23
3.
Digite um novo nome e pressione Enter.
4.
Você será solicitado para fazer check-out do item. Efetue o check-out conforme o suporte de seu plug-in de controle de origem.
5.
Na caixa de diálogo Source Control, clique em Rename or move the item(s) locally and in the source control store.
6.
No Solution Explorer, efetue o check-in do item conforme o suporte de seu plug-in de controle de origem.
7.
Notifique qualquer pessoa que possa ter efetuado check-out do item que você renomeou.
8.
Se houver suporte para propagação da alteração de namespace, faça com que os outros usuários efetuem um get para atualizar suas cópias locais. Eles receberão uma mensagem notificando-os sobre a operação de renomeação.
9.
Se não houver suporte para a propagação da alteração do namespace, é necessário informar aos outros usuários para que renomeiem suas cópias locais manualmente para refletir a alteração do nome.
COMO: definir opções de plug-in Dependendo da como você gerenciar seus itens em controle de origem, você pode desejar alterar algumas das opções padrão de controle de origem antes de usar o banco de dados. Essas opções estão disponíveis através da Configuração Options no menu Tools do Visual Studio. Observação Consulte a documentação do plug-in de controle de origem em uso para uma lista completa das opções no nível do banco de dados e das mais avançadas, além de instruções sobre como configurá-las. Para definir opções de plug-in 1.
No Visual Studio, no menu Tools, clique em Options e, em seguida, em Source Control.
2.
Na caixa de diálogo Options, clique em Plug-in Selection, assegure-se que seu plug-in é o indicado, e clique em OK.
3.
Selecione Environment na caixa de diálogo Options.
4.
Na caixa Source Control Environment Settings, selecione a função para a qual você deseja definir as opções de controle de origem. O Visual Studio seleciona automaticamente as opções de controle de origem padrão para a função que você tiver selecionado. Se você desmarcar qualquer uma das opções padrão, a caixa Source Control Environment Settings exibe a Opção Custom para indicar que você personalizou o perfil originalmente selecionado.
5.
Personalize o perfil, marcando ou desmarcando as caixas de seleção do controle de origem.
6.
Clique em OK.
7.
Agora clique em Plug-in Settings na caixa de diálogo Options.
Visual Studio
24
8.
Nessa aba, você pode definir configurações para cada função do plug-in. Clicando no botão Advanced tem-se acesso às configurações avançadas para a função que você está configurando.
9.
Quando concluir todas as configurações do plug-in, clique em OK para sair da caixa de diálogo Options.
Como: Trocar plug-ins de controle de origem: Se você tiver instalado mais de um plug-in para controle de origem para o Visual Studio, você pode trocá-los a qualquer momento. Lembre-se que projetos controlados por um plug-in de controle de origem não podem ser adicionados a uma solução gerenciada por um plug-in diferente. Uma vez que você acrescenta uma solução ou projeto ao controle de origem que usa um plug-in, você não pode acrescentar o mesmo item ao controle de origem que usa outro plug-in, a menos que você remova, primeiro, o item do controle de origem. Para mudar o plug-in padrão de controle de origem 1. 2. 3.
No Visual Studio, no menu Tools, clique em Options. Na caixa de diálogo Options clique em Source Control, depois em Plug-in Selection. Selecione um plug-in e clique OK.
COMO: exibir uma lista de arquivos com check-out Você pode usar a janela Pending Checkins para exibir uma lista dos arquivos com check-out na solução atual. O controle de origem do Visual Studio permite que você faça um check-in de arquivos desta janela com um único clique de botão. Para exibir uma lista de arquivos modificados 1.
No Visual Studio, no menu View, clique em Pending Checkins.
2.
Encaixe a janela conforme desejado.
3.
Se você desejar fazer check-in de arquivos desta janela, selecione-os e clique no botão Check In.
Referência a Interface do Usuário do controle de origem Esta seção descreve as caixas de diálogo usadas pelo controle de origem no Visual Studio. As caixas de diálogo a seguir são modelos que o desenvolvedor de plug-in pode adaptar conforme necessário. Você pode ou não ver essas caixas de diálogo no Visual Studio, dependendo do plug-in que está sendo usado para controle de origem: •
Verifique em
•
Verificar saída para editar
•
Obter
•
Desfazer Checkout
Visual Studio
25
Caixa de diálogo Change Source Control Cria e gerencia as conexões e ligações que vinculam uma solução ou projeto localmente salvos a uma pasta no banco de dados. Observação Não é possível usar o Visual Studio para vincular, desvincular, conectar ou desconectar um aplicativo da Web criado utilizando as FrontPage Server Extensions. Acesso à caixa de diálogo No Visual Studio, selecione um item no Solution Explorer. No menu File, clique em Source Control e depois em Change Source Control. Observação Esta caixa de diálogo também está disponível clicando com o botão direito do mouse sobre o item no Solution Explorer. Vincular Associa os itens selecionados a uma localidade do servidor de controle de origem especificado. Por exemplo, você pode usar este botão para criar um vinculo à pasta mais recentemente utilizada do servidor de controle de origem e banco de dados. Se uma pasta recente do servidor ou do banco de dados não puder ser encontrada, você será solicitado a especificar outra. Procurar Permite que você procure uma nova localidade para o item especificado no servidor de controle de origem. Colunas Identifica colunas para exibição e a ordem na qual elas são exibidas. Conectar Cria uma conexão entre itens selecionados e o servidor de controle de origem. Conectado Exibe o status da conexão de uma solução ou projeto selecionado. Desconectar Desconecta a cópia local de uma solução ou projeto no seu computador da cópia mestre no banco de dados. Utilize esse comando antes de desconectar seu computador do servidor de controle de origem, por exemplo, ao trabalhar off-line em seu laptop. OK Aceita alterações feitas na caixa de diálogo. Provedor Exibe o nome do plug-in de controle de origem. Atualizar
Visual Studio
26
Atualiza as informações de conexão para todos os projetos listados nesta caixa diálogo. Servidor Binding Indica a ligação de um item a um servidor de controle de origem. Nome do servidor Exibe o nome do servidor de controle de origem ao qual a solução ou projeto correspondente está acoplada. Solution/Project Exibe o nome de cada projeto e solução na seleção atual. Classificação Altera a ordem de classificação de colunas exibidas. Status Identifica o status de vinculação e conexão de um item. As possíveis opções são: Opção
Descrição
Válido
Especifica que o item está corretamente vinculado e conectado a pasta do servidor ao qual ele pertence.
Inválido
Especifica que o item está incorretamente vinculado ou desconectado da pasta à qual ele pertence. Use o comando Add to Source Control ao invés do comando Bind para este item.
Desconhecido Especifica que status do item sob controle de origem ainda não foi determinado. Não controlado
Especifica que o item não se encontra sob controle de origem.
Desagrupar Exibe a caixa de diálogo Source Control que permite que você remova os itens selecionados do controle de origem e permanentemente disassocie-os das suas pastas. Observação Se você desvincular um projeto da Web, será impossível revinculá-lo a seu servidor de controle de origem original até que você altere a localidade de sua cópia de trabalho.
Caixa de diálogo Check In (Controle de Código Fonte) Verifica um arquivo, solução ou projeto alterado no banco de dados do controle de código fonte. Check-ins também podem ser feitos a partir da janela Pending Checkins.
Visual Studio
27
Acesso à caixa de diálogo No Visual Studio, selecione um item na janela Solution Explorer. No menu File, clique em Source Control depois em Check In. Observação Esta caixa de diálogo também é disponibilizada clicando-se com o botão direito no item na janela Solution Explorer. Check In Realiza o check-in de todos os itens selecionados. Columns Identifica as colunas a serem exibidas e a ordem na qual elas são exibidas. Comments Especifica um comentário a ser associado com a operação de check-in. Don't show Check in dialog box when checking in items Impede que a caixa de diálogo seja exibidas durante operações de check-in. Flat View Exibe os arquivos onde está sendo feito o check-in como listas simples sob sua conexão com controle de código fonte. Name Exibe os nomes dos itens onde deve-se fazer o check-in. Os itens aparecem com as caixas de seleção ao lado selecionadas. Se você não desejar fazer check-in de um item específico, desmarque sua caixa de seleção. Options Exibe opções de check-in específicas de plug-ins de controle de código fonte quando a seta à direita do botão é selecionada. Sort Altera a ordem de classificação das colunas de exibição. Tree View Exibe a pasta e a hierarquia dos itens nos quais você estiver realizando o check-in.
Check-out para a caixa de diálogo Edit (controle de origem) Faz check-out de soluções, projetos ou itens individuais do controle de origem. Fazer check-out de um item pode copiar a cópia mestre atual para o seu computador local e remover o seu atributo de somente leitura. Opcionalmente você pode configurar o comando Check Out For Edit para fazer check-out somente da versão local. A menos que o pacote de controle de origem esteja configurado para dar suporte a checkouts compartilhados, fazer check-out de um item também bloqueia o item de maneira que ele estará em somente leitura para outros usuários.
Visual Studio
28
Caixa de diálogo Access No Visual Studio, selecione um item no Solution Explorer. No menu File, clique em Source Control, depois clique em Check Out For Edit. Observação Esta caixa de diálogo também está disponível clicando com o botão direito do mouse no item no Solution Explorer. Verificar saída Faz check-out de todos os itens selecionados. Colunas Identifica as colunas para exibição e a ordem na qual elas são exibidas. Comentários Especifica um comentário para associar à operação de check-out. Não caixa diálogo Show Check Out quando check-out itens Impede que a caixa de diálogo seja exibida durante operações de check-out. Exibir simples Exibe os itens do check-out em progresso como listas simples sob sua conexão de controle de origem. Editar Permite que você modifique um item sem fazer seu check-out. O botão Edit aparece somente se você tiver o Visual Studio configurado para dar suporte à edição de arquivos com check-in. Nome Exibe os nomes dos itens disponíveis para check-out. Os itens que estão selecionados aparecem com caixas de seleção ao seu lado. Se você não desejar fazer check-out de um item específico, desmarque sua caixa de seleção. Opções Exibe opções de check-out específicas do plug-in de controle de origem quando a seta à direita do botão é clicada. Classificação Altera a ordem de classificação das colunas exibidas. Exibir árvore Exibe a hierarquia de pastas e arquivos para o item do check-out em progresso.
Caixa de diálogo Get (controle de origem) Recupera uma cópia somente para leitura do item selecionado do banco de dados para sua pasta de trabalho, ou outra pasta que você especificar.
Visual Studio
29
Acesso à caixa de diálogo No Visual Studio, selecione um item no Solution Explorer. No menu File, clique em Source Control, depois em Get. Observação Esta caixa de diálogo também está disponível clicando-se com o botão direito do mouse sobre o item no Solution Explorer. Ação Especifica a ação a ser executada nos itens a ser recuperados. Colunas Identifica colunas para exibição e a ordem na qual elas são exibidas. Exibir simples Exibe os arquivos sendo recuperados como listas simples sob suas conexões ao controle de origem. Hora modificado Exibe o momento em que um item foi modificado pela última vez. Nome Exibe os nomes dos itens a ser recuperados. Os itens aparecem com as caixas de seleção ao lado dos mesmos selecionadas. Se você não desejar recuperar um item específico, desmarque a caixa de seleção correspondente. Opções Exibe opções de recuperação específicas do plug-in do Source Safe quando a seta à direita do botão é clicada. Classificação Altera a ordem de classificação das colunas exibidas. Exibir árvore Exibe a hierarquia de pastas e arquivos para os itens sendo recuperados.
Janela de check-ins pendentes Exibe todos os arquivos com check-out na solução ou projeto atual. Você pode usar esta janela para fazer check-in de todos os arquivos com um único clique de botão. Caixa de diálogo de acesso No Visual Studio, no menu View, clique em Pending Checkins. Change type Identifica o tipo de alteração que foi feita para o item selecionado. Check In Efetua check-in dos itens selecionados. Columns
Visual Studio
30
Identifica as colunas para exibição e a ordem na qual elas serão exibidas. Comments Especifica um comentário a ser associado com a operação de check-in. Flat View Exibe os arquivos que você está efetuando check-in na forma de listas simples em sua conexão de controle de origem. Name Exibe os nomes dos itens com check-in a ser efetuado. Os itens aparecem com as caixas de seleção ao seus lados selecionadas. Se você não desejar fazer o check-in de um item específico, desmarque sua caixa de seleção. Options Exibe opções de check-in específicas de plug-ins quando a seta à direita do botão é clicada. Sort Altera a ordem de classificação das colunas exibidas. Tree View Exibe a hierarquia das pasta e arquivos que você estiver efetuando check-in. Undo checkout Reverte o check-out de um item selecionado, o qual perde qualquer alteração feita desde o check out.
Guias de plug-in para controle de origem (caixa de diálogo Options) Permitem a personalização de funções de controle de origem e configurações de plug-in no Visual Studio. As guias de plug-in fazem parte da caixa de diálogo Options do Visual Studio, localizada sob a entrada Source Control: •
Plug-in Selection Alterna entre os plug-ins de controle de origem.
•
Environment Especifica as configurações de ambiente para as funções padrões definidas pelo Visual Studio. Por exemplo, se o usuário for um desenvolvedor independente, conflitos com outros usuários não são geralmente criados ao manter itens com check-out após um check-in. Para esta função, o Visual Studio seleciona automaticamente a opção Keep items checked out when checking in.
•
Plug-in Settings Especifica opções para identificar o plug-in de controle de origem associado a um projeto ou solução.
Guia Access No Visual Studio, no menu Tools, clique em Options, e depois em Source Control. Opções são definidas para Plug-in Selection, Environment, e Plug-in Settings. Lista de elementos de interface do usuário, Selection Plug-in Altera o plug-in atual de controle de origem associado ao IDE do Visual Studio, e faz dele o plug-in padrão. O plug-in selecionado é refletido na entrada Source
Visual Studio
31
Control no menu File do Visual Studio. Clique em OK para registrar sua alteração e alternar a operação para o plug-in escolhido por você. Observação Você pode usar esta parte da caixa de diálogo Options para desativar o controle de origem clicando em None na lista de plug-ins Lista de elementos de interface do usuário, Environment Permitir que itens a serem editadas checked-in Especifica que itens com check-in podem ser editados na memória. Se este item estiver selecionado, um botão Edit aparecerá na caixa de diálogo Check Out For Edit quando você tentar editar um item com check-in. Check in tudo ao fechar uma solução ou projeto Especifica que você irá fazer check-in de todos os itens ao fechar uma solução ou projeto. Itens Checked-in Contém configurações para salvar e editar itens com check-in. Não Mostrar caixa de diálogo check-out quando check-out itens Especifica que o Visual Studio deve exibir o comando Check Out Now no menu File. Nesse caso, uma caixa de diálogo de check-out não é exibida. Não Mostrar caixa de diálogo check-in ao verificar em itens Especifica que o Visual Studio deve exibir o comando Check In Now no menu File. Nesse caso, uma caixa de diálogo de check-in não será exibida. Não mostrar esta caixa de diálogo novamente Especifica que o Visual Studio não deve mostrar as configurações de ambiente de controle de origem. Edição Especifica a maneira com que itens devem ser manipulados na edição. As opções possíveis são: Opção
Descrição
Prompt for checkout
Especifica que o Visual Studio deve emitir um prompt para um check-out.
Prompt for exclusive checkouts
Especifica que o Visual Studio deve emitir um prompt para check-outs exclusivos.
Check out automatically
Indica que o Visual Studio deve fazer check-out de itens automaticamente.
Do nothing
Especifica que o Visual Studio não deve fazer nada na edição.
Obter tudo quando uma solução ou projeto for aberto
Visual Studio
32
Recupera a versão mais recente de todos os itens quando você abre uma solução ou projeto. Manter itens check-out ao verificar na Especifica que itens em processo de check-in devem permanecer com checkout para você. Se você desejar alterar esta opção para um check-in específico, clique na seta de Options na caixa de diálogo Check In, e desmarque a opção Keep Checked Out. Redefinir Redefine confirmações. Salvar Especifica a maneira com que itens devem ser manipulados quando você os salva. As opções possíveis são: Opção
Descrição
Prompt for checkout
Especifica que o Visual Studio deve emitir um prompt para check-out em uma operação de salvar.
Check out automatically
Especifica que o Visual Studio deve fazer check-out automaticamente em uma operação de salvar.
Save as
Especifica que o Visual Studio deve apresentar um prompt Save as em uma operação de salvar.
Configurações de ambiente controle de origem Especifica o nome do plug-in de controle de origem para o qual você está definindo opções de ambiente. Lista de elementos de interface do usuário, Plug-in Settings Avançadas Permite que você defina opções adicionais para usar o plug-in de controle de origem . O botão Advanced só está disponível quando um plug-in de controle de origem válido está instalado no computador local. As configurações avançadas são específicas para o plug-in. Identificação de logon Especifica o nome de usuário para efetuar logon no plug-in de controle de origem. Se seu plug-in der suporte, esse nome será colocado automaticamente na caixa de diálogo de logon usada pelo plug-in de controle de origem para acessar o servidor. Para ativar essa opção, desative logons de usuário automáticos do seu plug-in de controle de origem, e reinicie o Visual Studio. Observação A identificação de logon somente pode ser editada quando um plug-in válido de controle de origem estiver instalado na máquina local.
Visual Studio
33
Executar atualizações de status em segundo plano Atualiza automaticamente os ícones de controle de origem no Solution Explorer à medida que o status de item se altera. Se você tiver atrasos ao executar operações intensivas no servidor, especialmente quando abrir uma solução ou projeto do controle de origem, desmarcar esta opção pode melhorar o desempenho. Configurações plug-in Especifica o nome do plug-in de controle de origem para o qual você está fazendo configurações.
Caixa de diálogo Source Control Permite que você remova itens do controle de código fonte e desfaça permanentemente a associação entre os itens e suas pastas. Esta caixa de diálogo é usada para propagar as operações excluir, renomear e mover. Acesso à caixa de diálogo No Visual Studio, clique em um item com o botão direito do mouse, em seguida, clique em Delete ou Rename. O conteúdo da caixa de diálogo varia dependendo do comando. Lista de elementos da interface do usuário para renomeações ou movimentações Make my current choice the default action for all future renames or moves Especifica que sua escolha será a ação padrão das operações posteriores de renomear ou mover. Você pode redefinir o padrão em Only rename or move item(s) locally Especifica que os itens devem ser renomeados localmente. Os itens renomeados ou movidos não mais estarão sob controle de versão. Rename or move the item(s) locally and in the source control store Especifica que os itens devem ser renomeados localmente e no banco de dados. A versão mais recente da solução ou projeto não refletirá a renomeação ou a movimentação até o próximo check-in. You are about to rename or move the following Lista os itens que você selecionou para serem renomeados ou movidos. Lista de elementos da interface do usuário para exclusões Delete the item(s) locally and in the source control store Especifica que os itens devem ser excluídos localmente e no banco de dados. A versão mais recente da solução ou projeto não refletirá a operação de exclusão até o próximo check-in. Make my current choice the default action for all future deletes Especifica que a sua escolha será a ação padrão das operações posteriores de exclusão. Only delete item(s) locally
Visual Studio
34
Especifica que os itens devem ser excluídos localmente. Outros membros da equipe não são afetados por essa opção até o próximo check-in. Você precisará excluir manualmente os itens no banco de dados após o check-in. You are about to delete the following Lista os itens que você selecionou para exclusão.
Caixa de diálogo Undo Checkout (Controle de Código Fonte) Reverte a opção de check-out do item selecionado na janela Solution Explorer. Você perderá qualquer alteração feita desde o último check-out. Acesso à caixa de diálogo No Visual Studio, selecione um item na janela Solution Explorer. No menu File, clique em Source Control e em seguida clique em Undo Checkout. Observação Esta caixa de diálogo também é disponibilizada clicando-se com o botão direito no item na janela Solution Explorer. Columns Identifica as colunas a serem exibidas e a ordem na qual elas são exibidas. Flat View Exibe os itens como listas simples sob a sua conexão com o controle de código fonte. Name Exibe os nomes dos itens para os quais será desfeito o check-out. Os itens aparecem com as caixas de seleção ao seu lado selecionadas. Se você não deseja desfazer o check-out de um item, desmarque sua caixa de seleção. Options Exibe opções para desfazer o check-out específicas de plug-ins de controle de código fonte quando a seta à direita do botão é selecionada. Sort Altera a ordem de classificação das colunas de exibição. Tree View Exibe a pasta e a hierarquia dos itens nos quais você está revertendo o check-out. Undo Checkout Reverte o check-out.
Visual Studio
35
Configurações do Visual Studio Configurações no Visual Studio consistir de personalizações feitas para o ambiente de desenvolvimento integrado (IDE) com base em diferentes tipos de atividades de desenvolvimento e seus próprios personalizações. Essas personalizações incluir mostrar ou ocultar determinada layouts janela, colocação dos comandos de menu, nomes de menu, modelos disponíveis na caixa de diálogo Novo projetos, janelas de ferramentas, predefinidas combinações de teclas de atalho, e ajuda filtros, e assim por diante. Com configurações, você pode: • • •
Criar uma cópia das suas configurações ativa para uso em uma segunda máquina Compartilhar suas configurações Ativa com outros desenvolvedores Permitir todos os membros da equipe para usar as mesmas configurações em Selecione áreas, como o editor, sem remover personalizações para outras áreas individuais
Quais são configurações? Configurações são personalizações ao IDE, como layouts janela, padrões editor, e opções caixa diálogo disponíveis que você pode salvar, Exportar, importar, ou redefinir para facilitar o IDE para usar. As configurações Ativa consistem em duas partes: predefinidas personalizações do arquivo instalado.vssettings você selecionou na primeira vez você iniciou Visual Studio e qualquer personalização IDE subseqüentes que você fez. Configurações ativa são salvas por padrão no currentsettings.vssettings arquivo. Para obter mais informações sobre as configurações predefinidas disponíveis com Visual Studio, consulte os seguintes tópicos. Como configurações funcionam? Quando você inicia Visual Studio, primeiro é necessário para selecionar uma coleção configurações que contém configurações predefinidas projetadas para corresponder seus hábitos de desenvolvimento. Se você atualizar para outro edição do Visual Studio, você também terá a opção de aplicar configurações a outros edição na usando a My Previous Settings opção. A coleção configurações é o primeiro elemento de suas configurações ativa. Cada vez que fizer uma alteração em uma configuração controlada pelo Visual Studio, como alterar a cor do commented código no Editor, a alteração é automaticamente salvo para currentsettings.vssettings juntamente com as configurações predefinidas. O Visual Studio aplica suas configurações ativa automaticamente sempre que você iniciar o Visual Studio. Em alguns casos, você pode alterar as configurações aplicadas como parte de uma coleção predefinida Por exemplo, se uma coleção configurações simplificada caixa de diálogo Opções, ocultando páginas, você pode exibir essas páginas manualmente, selecionando Show all settings. Em outros casos, você não pode substituir a configuração predefinida sem aplicar uma coleção diferente. Para obter uma lista detalhada das personalizações incluídos no configurações predefinidas, consulte Configurações do Visual Studio. Para obter informações sobre como aplicar coleções configurações diferentes, consulte Como: Alterar configurações selecionadas.
Visual Studio
36
Configurações podem ser aplicadas de duas maneiras: completamente você pode substituir as configurações Ativa com novas configurações ou você pode substituir uma parte de suas configurações ativa. Importar um arquivo que contém todas as categorias configurações possíveis.vssettings ou aplicar outra coleção configurações dois substituirão as configurações ativa completamente. Importar um arquivo que contém somente um subconjunto das categorias configurações ou unselecting categorias configurações em um arquivo.vssettings.vssettings só se aplica essas configurações que estiver selecionadas, deixando as configurações ativos para as categorias restantes intacto. Ajuda e Configurações Coleções configurações predefinidas também fornecer personalizações à Ajuda. Configurações especificam o padrão How Do I Página na Ajuda. Eu selecionado como pendente eu página filtros fazer o conteúdo que aparece no índice analítico e no índice,, bem como fornece conteúdo personalizado na caixa como guia. Você pode alterar o ativo How Do I página na lista drop-down como pendente eu outras páginas. Configurações e segurança Algumas categorias configurações podem conter informações sobre você ou seu computador que pode ser uma questão de segurança se você compartilhar suas configurações com outros usuários. Inversamente, se você pretende importar configurações fornecidas por outras pessoas, você precisará estar ciente das categorias dentro do arquivo configurações que podem ser uma questão de segurança. Um ícone aparece ao lado essas categorias com as possíveis questões de segurança. Essas categorias configurações incluem: •
Favoritos
•
Importar e exportar configurações
Como: Alterar configurações selecionadas Você pode aplicar um sub-set das configurações de uma coleção configurações diferentes para as configurações atuais para criar um ambiente de desenvolvimento mais personalizada. Para obter mais informações sobre configurações predefinidas, consulte Configurações do Visual Studio. Para alterar configurações selecione 1.
No menu Tools, escolha Import and Export Settings.
2.
Na Welcome to the Import and Export Settings Wizard Página, clique em Import selected environment settings e clique em Next.
3.
Na página Save Current Settings, selecionar Yes, save my current settings, e clique em Next
4.
No Which collection of settings do you want to import, selecione uma coleção configurações na lista e clique em Next.
5.
No Which settings do you want to import, expanda a lista e selecione apenas a categorias ou itens de categoria que você deseja que se aplicam as configurações atuais.
6.
Clique em Finish. A Reset Complete página lista os erros associados a redefinindo as configurações com Details.
Visual Studio
37
Trabalhando com configurações Esta seção contém informações sobre a aplicação, exportar e importar configurações para personalizar o ambiente de desenvolvimento integrado (IDE) para melhor correspondência seu estilo de desenvolvimento. Você também pode encontrar informações gerais sobre como configurações funcionam e os tipos de itens que são personalizadas através das configurações. Além disso, aprender a especificar um conjunto de configurações de uso da equipe.
COMO: Compartilhar configurações entre computadores Você pode exportar configurações para o editor, projetos, depuração, fontes e cores, e outras áreas IDE a um arquivo que você pode importar e usar em outro computador, como seu computador de desenvolvimento segundo ou computador um colega na. Exportar configurações para um arquivo Você pode optar por exportar todas ou algumas das suas configurações atuais a um arquivo.vssettings que você pode usar em um computador segundo ou compartilhar com outros desenvolvedores. Para exportar configurações 1.
No menu Tools, escolha Import and Export Settings.
2.
Na Welcome to the Import and Export Settings Wizard Página, clique em Export selected environment settings e clique em Next.
3.
No Which settings do you want to export?, selecione as categorias você pretende exportar e, em seguida, clique em Next Configurações. Observação Algumas categorias configurações podem conter informações sobre você ou seu computador que pode ser uma questão de segurança. Essas categorias configurações são identificadas por um ícone de aviso amarelo e preto.
4.
No What do you want to name your settings file, digite um nome para o arquivo de configurações.
5.
Se você gostaria de salvar o arquivo em um local diferente, clique Browse ou digite um novo caminho para Store my settings file in this directory.
6. 7.
Clique em Finish. Na página Export Complete, examine os erros associados à exportação as configurações com Details.
Importar um arquivo.vssettings Após ter criado um arquivo.vssettings, você pode usar esse arquivo em outros computadores ao importar esse arquivo para outra instalação do Visual Studio. Você também pode importar arquivos de configuração criados por outros usuários e aplicar essas configurações para o Visual Studio. Se você está importando o arquivo configurações contém todas as categorias configurações possíveis, importar esse arquivo completamente substitui as configurações existentes. Importar o arquivo se um arquivo de configurações
Visual Studio
38
contém apenas um subconjunto das categorias configurações, apenas aplica essas categorias e não afeta as configurações atuais para categorias não importadas. Um desenvolvedor na equipe por exemplo, tem exportadas todas as sua configurações para um arquivo para que outras pessoas na equipe podem utilizá-lo. Se você desejar se aplicar as configurações de fontes e cores e as configurações teclado desse arquivo, somente você pode limpar todos os outras categorias configurações e apenas aplicar as configurações selecionadas sem alterar as configurações atuais para as categorias restantes Para importar configurações 1.
No menu Tools, escolha Import and Export Settings.
2.
Na Welcome to the Import and Export Settings Wizard Página, clique em Import selected environment settings e clique em Next.
3.
Logon Save Current Settings, optar Yes, save my current settings por criar um backup de suas personalizações IDE atuais; optar No, just import new settings, overwriting my current settings por continuar sem fazer o backup suas personalizações IDE atuais.
4.
No What collection of settings do you want to import?, selecione um arquivo na lista ou clique Browse para localizar um arquivo de configurações e clique em Next.
5.
No Which settings do you want to import?, selecione as configurações opções você pretende importar do arquivo.vssettings selecionado. Observação Algumas categorias configurações podem conter informações que podem ser uma questão de segurança. Essas categorias configurações são identificadas por um ícone de aviso amarelo e preto.
6.
Clique em Finish.
7.
Na caixa Save Current Settings de diálogo, decidir se deve ou não para salvar as configurações atuais.
8.
Na página Import Complete, examine os erros associados a importar as configurações em Details.
Compartilhar um arquivo único.vssettings entre computadores Em vez de criar uma cópia das suas configurações atuais e usando a cópia em outro computador, você pode compartilhar um arquivo.vssettings único em um compartilhamento de rede. Essa técnica pode ser útil se você desejar as personalizações mesmas exatas disponíveis em todas as vezes em vários computadores. Quando você compartilhar um arquivo.vssettings único em vários computadores, personalizações feitas, independentemente do computador no qual você torná-los na, são salvas para o arquivo.vssettings. A lista Tarefas por exemplo, se você fechar a lista de tarefas em um computador, na próxima vez que você iniciar o Visual Studio em outros computadores, não será exibida. Para compartilhar um arquivo único configurações entre computadores 1.
No menu Tools, escolha Options
2.
Na pasta Environment, escolha Import and Export Settings.
Visual Studio
39
3.
Na Automatically save my settings to this file, digite uma pasta compartilhada ou clique Browse para localizar um compartilhamento de rede.
4.
Clique em OK.
5.
No segundo computador, repita as etapas 1 a 4.
Como: Especificar configurações para uma equipe Quando estiver trabalhando em um grupo, ele pode ser útil para que cada desenvolvedor usar as configurações mesmas exatas em algumas áreas do ambiente de desenvolvimento integrado (IDE), como o editor. Você pode incentivar Essa consistência criando um arquivo.vssettings para um subconjunto de categorias configurações disponíveis que todos os desenvolvedores de seu grupo podem usar. Quando aplicado, essas configurações da equipe não seria substituem qualquer categoria não especificada no arquivo.vssettings, permitindo que desenvolvedores individuais para manter personalizações feitas para outras áreas do IDE. Para obter informações sobre como criar um arquivo.vssettings, consulte COMO: Compartilhar configurações entre computadores. O Visual Studio verifica que você estiver usando a versão mais recente do arquivo.vssettings de grupo sempre que você iniciar o Visual Studio. Quaisquer alterações feitas no arquivo.vssettings são aplicadas automaticamente. Para especificar um arquivo.vssettings para uso em um grupo 1.
Partir do Tools menu, escolha Options.
2.
Na pasta Environment, escolha Import and Export Settings.
3.
Selecione Use team settings file.
4. 5.
Insira um UNC ou caminho local, ou clique Browse para localizar o arquivo.vssettings de grupo. Clique OK para aplicar as configurações.
Import and Export Settings Wizard Use este assistente para exportar configurações, importar configurações, ou substituir as configurações para usar uma coleção configurações predefinidas. Opção
Descrição
Exportar configurações de ambiente selecionada
Salvar um subconjunto ou todas as suas configurações existentes para que você pode usar essas configurações em outro computador.
Importar configurações de ambiente selecionada
Aplica as configurações em um arquivo você tiver recebido. Substitui existentes configurações com os do arquivo importado.
Redefinir todas as configurações
Permite que você se reverter as configurações de volta para uma das configurações predefinidas disponíveis com o produto.
Você pode acessar este assistente a partir do Tools Menu, escolhendo Import and Export Settings.
Visual Studio
40
Escolha Configurações para exportar, importar e exportar configurações Assistente Use esta página do Assistente para configurações a importação e exportação para especificar algumas ou todas as suas configurações atuais ser exportados para um arquivo para uso em outros computadores. Você pode acessar este assistente a partir do Tools menu clicando Import and Export Settings. •
COMO: Compartilhar configurações entre computadores
Which settings do you want to export? Selecione para exportar todas as configurações, ou especificar um sub-set das configurações por categoria ou item de categoria. Observação Configurações que podem conter informações de identificação sobre você ou seu computador são marcadas com um gráfico de aviso. Essas configurações não são selecionados por padrão, mas são automaticamente selecionados se você escolher All Settings.
Nomeie O arquivo de configurações, importar e exportar configurações Assistente Use esta página do Assistente para configurações a importação e exportação para especificar o nome e local do arquivo que irá conter as configurações exportadas. Você pode acessar este assistente a partir do Tools menu clicando Import and Export Settings. COMO: Compartilhar configurações entre computadores What do you want to name your settings file? Digite um nome personalizado para as configurações exportadas. Store my settings file in this directory. Especifica o diretório padrão no qual as configurações exportadas serão salvos. Clique Browse para especificar uma pasta personalizada.
Salvar configurações atuais, importar e Assistente para exportação configurações Use esta página do Assistente para configurações a importação e exportação para salvar as configurações ativos antes de importar novas configurações. Você pode acessar este assistente a partir do Tools menu clicando Import and Export Settings. COMO: Compartilhar configurações entre computadores Yes, save my current settings Selecione esta opção para criar um backup das suas configurações atuais. Mais tarde você pode optar por importar essas configurações para retornar ao estado IDE atual.
Visual Studio
41
Setting file name
Digite um nome personalizado para as configurações atuais.
Store my settings file in this directory
Especifica o diretório padrão no qual as configurações atuais serão salvos. Clique Browse para especificar uma pasta personalizada.
No, just import new settings, overwriting my current settings Selecione esta opção se você não quiser backup as configurações atuais. Se você está importando o arquivo configurações contém configurações para itens de categoria você ter personalizado, as configurações importadas substituirá as alterações.
Escolha Configurações para importar, importar e Assistente configurações exportação Use esta página do Assistente para configurações a importação e exportação para especificar a coleção Configurações você pretende importar. Você pode acessar este assistente a partir do Tools menu clicando Import and Export Settings. •
COMO: Compartilhar configurações entre computadores
Which settings do you want to import? Selecione uma coleção na lista, ou clique Browse para localizar uma coleção diferente para importar. Description Exibe informações sobre a coleção configurações que são otimizadas para. Somente disponível para Default Settings.
Escolha um coleção de configurações para importar, importar e Assistente configurações exportação Use esta página do assistente Importar e exportar configurações para especificar uma coleção configurações predefinidos ou uma coleção configurações personalizadas você deseja importar para uso no IDE. Você pode acessar este assistente a partir do Tools menu clicando Import and Export Settings. •
Como: Alterar configurações selecionadas
Which collection of settings do you want to import? Lista as coleções configurações disponíveis. Clique Browse para navegar para uma coleção configurações que não aparece na lista. Description Exibe informações sobre a coleção configurações que são otimizadas para. Para obter mais informações sobre coleções configurações predefinidas, consulte Configurações do Visual Studio.
Visual Studio
42
Complete, Import and Export Settings Wizard Esta página do importação e assistente exportar para configurações exibe informações sobre a tarefa configurações concluída com êxito ou não e todos os erros que foram encontrados. Você pode acessar este assistente a partir do Tools menu clicando Import and Export Settings. Details Exibe informações sobre qualquer sucesso ou falhas.
Visual Studio
43
Walkthroughs Visual C# As explicações passo a passo fornecem instruções passo a passo para cenários comuns, que o torna um bom local para iniciar o aprendizado sobre o produto ou uma área de um recurso específico. Esta seção contém links para C# programação orientações e depuração orientações.
Explicação Passo a Passo: Criando um XML Web Services usando Visual Basic ou Visual C# Explicação passo a passo a seguir descreve o processo para criar um XML Web Services que converte temperaturas medidas em Fahrenheit para Celsius usando Visual Basic ou C# visual. Você durante esta explicação passo a passo, você irá realizar as atividades a seguir: •
Criar um XML Web Services usando o modelo projeto serviço ASP.NET Web.
•
Implementar o XML Web Services.
•
Executar o XML Web Services no modo de depuração.
•
Implantar o XML Web Services.
Para concluir o explicação passo a passo, você precisará ter acesso a uma máquina que atende aos requisitos para criar um projeto da Web. Para obter mais informações, consulte Tour guiado da criação de sites no Visual Web Developer e Passo a passo: Criando e usando um serviço da Web do ASP.NET no Visual Web Developer. Criar projeto serviço XML da Web O Visual Studio fornece um modelo de projeto ASP.NET Web Service para ajudá-lo a criar XML Web Services no Visual Basic e Visual C#. Para criar um ASP.NET Web Service Project 1.
No menu File, escolha New Web Site.
2.
Na caixa de diálogo New Web Site, selecione o ícone ASP.NET Web Service.
3.
Digite o endereço do servidor Web no qual você irá desenvolver o XML Web Services e especifique TempConvert1 como o nome do diretório, tal como " http://MyServer/TempConvert1 ". Por padrão, o projeto usa seu computador local, " http://localhost ".
Observação Para alguns tipos de projeto, o caixa de texto Name está disponível porque especificando a localidade define em vez disso o nome do projeto. Por exemplo, aplicativos da Web e XML Web Services estão localizados em um servidor Web e derivam seus nomes do diretório virtual especificado no servidor.
Observação Você desenvolve XML Web Services em um servidor de desenvolvimento. Por padrão, o servidor de desenvolvimento é sua máquina local. Normalmente, voce desenvolve e constrói o projeto em um
Visual Studio
44
servidor de desenvolvimento, e então você o implementa em outro servidor (o servidor se implementação) que irá hospedar o XML Web service usando um projeto de implementação. Entretanto, se você estiver desenvolvendo diretamente no servidor que hospedará o XML Web Services, o servidor de desenvolvimento e o servidor de implantação são os mesmos. 4.
Clique OK para criar o projeto.
O Visual Studio automaticamente cria os arquivos necessários e inclui as referências necessárias para suportar um XML Web Services. Quando você criar um projeto XML Web Services no Visual Studio, verá o criador de componente para Service1.asmx. Implementar o serviço da Web XML A próxima etapa é escrever o código para implementar a funcionalidade do XML Web Services que os clientes irão acessar. Para XML Web Services criados no Visual Studio, um arquivo oculto code-behind associado ao arquivo.asmx do XML Web Services que o Visual Studio criou para você contém esse código. Para obter mais informações, consulte COMO: Criar um Método de Serviço da Web XML. Para adicionar um método de XML Web Service 1.
No arquivo código Service.vb, localize o código para a declaração de classe
Service. Substituia o código de atributo System.Web.Services.WebService com o
seguinte código antes da declaração de classe (mostrada em negrito): Visual Basic _ Public Class Service [System.Web.Services.WebService( Namespace="http://Walkthrough/XmlWebServices/", Description="A temperature conversion service.")] public class Service : System.Web.Services.WebService
Unindo o atributo WebService à classe Public se torna possível a inclusão de informação adicional sobre o XML Web Service, como um namespace para o XML Web Service e uma descrição para o XML Web Service. A propriedade description desse atributo está incluída na página de ajuda de Service. Para obter mais informações, consulte COMO: Usar o Atributo WebService. 2.
Na classe Service, adicione o seguinte código para declarar a função ConvertTemperature: Visual Basic _ Public Function ConvertTemperature(ByVal dFahrenheit As Double) _ As Double Return ((dFahrenheit - 32) * 5) / 9 End Function [WebMethod(Description="This method converts a temperature in " + "degrees Fahrenheit to a temperature in degrees Celsius.")] public double ConvertTemperature(double dFahrenheit) { return ((dFahrenheit - 32) * 5) / 9; }
Anexando o atributo WebMethod a um método Public expõe esse método como parte do XML Web Services. A propriedade description deste atributo está incluído na página ajuda de Service e na página de ajuda Service Methods. Para obter mais informações, consulte COMO: Usar o Atributo WebMethod. 3.
Clique com o botão direito do mouse Service.asmx em Solution Explorer e clique Set as Start Page no menu de atalho.
Visual Studio
45
4.
Salvar a solução.
Depurar o XML Web Service O Visual Studio oferece vários métodos para criar e executar um XML Web Services a partir da IDE, tais como: •
Iniciar (com depuração)
•
Iniciar sem depuração
•
Modo de Exibição no navegador
Como um projeto Visual Studio, este XML Web Services tem configurações separadas para as versões de lançamento e depuração. Como você criou este projeto usando o modelo de projeto do serviço da Web ASP.NET, Visual Studio automaticamente criou essas configurações e definiu as opções padrão apropriadas e outras configurações. Para obter mais informações, consulte HOW TO: definir depuração e configurações de versão. Nesta explicação passo a passo, será colocado um ponto de interrupção no XML Web Services e usado o método Start (with Debugging). Para obter mais informações, consulte Como Depurar XML Web Services em Código Não Gerenciado. Antes de depuração, verifique as configurações de depuração. Para obter mais informações, consulte Projetos Serviço da Web XML depuração preparação:. Para usar um ponto de interrupção e iniciar o XML Web Services com depuração 1.
No menu Debug, escolher New Breakpoint, então Break At Function. Na guia Function, digite ConvertTemperature na caixa Function e clique OK para adicionar um ponto de interrupção na declaração de método ConvertTemperature.
2.
No menu Debug, clique em Start, clique Ok na janela Debugging Not Enabled para iniciar depuração. Este comando instrui o Visual Studio a executar o XML Web Services no depurador. O Visual Studio cria o projeto e o implanta para o servidor de desenvolvimento designado. Após a conclusão, o navegador padrão exibe o arquivo.asmx a partir do servidor de implantação. Quando você abre um arquivo.asmx em um navegador, o XML Web Services retorna uma página Service auxiliar que fornece informações sobre o XML Web Services. O Service Description link leva você para um documento XML que contém a descrição serviço formal do XML Web Services. Para obter mais informações, consulte XML Web Service Description.
3.
Na página de ajuda Service, clique no link ConvertTemperature.
4.
Na caixa dFahrenheit, digite o número 212, e clique no botão Invoke. Quando o processamento atingir a função ConvertTemperature, o processamento pára. O depurador Visual Studio realça a linha que contém o ponto de interrupção; enquanto ele é interrompido, você pode executar uma variedade de tarefas. Para obter mais informações, consulte Explicação detalhada sobre o depurador e Exibindo Dados no Depurador.
5. 6.
No menu Debug, clique em Continue para continuar o processamento. O XML Web Services responde retornando o valor convertido em um documento XML semelhante ao seguinte:
Visual Studio
46
100
Para interromper a execução do XML Web Services e retornar ao editor de código, no menu Debug, clique em Stop Debugging. 7.
No menu Debug, clique em Delete All Breakpoints.
Implantando o XML Web Service Para tornar seu XML Web Services disponível para outros, você deve implantá-lo em um servidor Web que seja acessível para os clientes que você queira dar suporte. Para distribuir o XML Web Services para um servidor que não seja o servidor de desenvolvimento, você pode adicionar um projeto Web Setup ou copiar os arquivos necessários para o servidor de destino. Nesta explicação passo a passo, você pode escolher como implantar este XML Web Services. Para obter mais informações, consulte COMO: Implantar Serviços da Web XML no Código Gerenciado. Para implantar o XML Web Services usando um projeto Web Setup 1. 2. 3.
No menu File, aponte para Add, e clique New Project. Selecionar o nó Other, e o nó Setup and Deployment Projects, e clique em Web Setup Project. Na caixa Name, digitar TempConvert1WebSetup, e clique OK.
Observação Por padrão, o instalador usa o nome do projeto de implantação ao criar o diretório virtual em seu servidor de implantação. 4.
No painel esquerdo do File System Editor, selecione Web Application Folder. Para obter mais informações, consulte File System Editor.
5.
No Solution Explorer, clique com o botão direito do mouse em TempConvert1WebSetup, aponte para Add, e clique Project Output.
6.
Na caixa de diálogo Add Project Output Group, selecione Content Files. Para obter mais informações, consulte Como adicionar e remover Outputs Project no File System Editor:.
o
O grupo Content Files consiste dos seguintes arquivos para o XML Web Services: Service1.asmx, GLOBAL.asax, e Web.config. Para obter mais informações, consulte COMO: Implantar Serviços da Web XML no Código Gerenciado.
7. 8.
Clique em OK. No Solution Explorer, clique com o botão direito do mouse no projetoTempConvert1WebSetup, e no menu de atalho, clique Build. Isso cria um arquivo do Windows Installer no diretório de projeto local. Executar este arquivo instala o aplicativo da Web.
Para implantar o XML Web Services, copiando o projeto 1.
No Solution Explorer, selecione o projeto TempConvert1.
2.
No menu Project, clique em Copy Web Site.
3.
Clique no ícone ao lado da caixa suspensa Connect To para abrir a caixa de diálogo Open Web Site. Navegue para a localidade para a qual você deseja copiar o projeto.
Visual Studio
47
4. 5.
No painel Source Web Site, selecione os arquivos para copiar e movê-los para o painel Remote Web Site, clicando no ícone de seta à direita. . Clique Copy Web Site para copiar o site.
Finalmente, para criar um aplicativo cliente que acesse esse XML Web Services, consulte um destes procedimentos: •
Passo-a-Passo: acessando um XML Web Services utilizando Visual Basic ou Visual C#
•
Acessar um serviço da Web XML usando C++ Walkthrough:
•
Acessar um serviço da Web XML usando C++ e o CLR Walkthrough:
Passo-a-Passo: acessando um XML Web Services utilizando Visual Basic ou Visual C# A explicação passo-a-passo a seguir descreve o processo para acessar um XML Web Services de um aplicativo criado com Visual Basic ou Visual C#. Durante o curso desta explicação passo a passo, você irá realizar as atividades a seguir: •
Criar um aplicativo cliente usando o modelo de projeto de aplicativo ASP.NET.
•
Adicionar uma referência da Web para um XML Web Services.
•
Escrever código para acessar o XML Web Services.
•
Executar o aplicativo da Web no modo de depuração.
•
Implantar o aplicativo da Web.
Para concluir a explicação passo a passo, você deve fornecer o seguinte: •
• o
Devido ao fato desta explicação passo a passo usar um aplicativo da Web para acessar um XML Web Services, você deve fornecer uma máquina que atenda aos requisitos para criar um projeto da Web. Para obter mais informações, consulte Tour guiado da criação de sites no Visual Web Developer. Você também precisará de permissões suficientes para ser capaz de criar projetos XML Web Services no computador onde seu servidor Web está. Para obter detalhes, consulte Segurança de site ASP.NET (Visual Studio). Um XML Web Services criado a partir desta explicação passo a passo: Explicação Passo a Passo: Criando um XML Web Services usando Visual Basic ou Visual C# Criando um projeto cliente de XML Web Services
Nesta explicação passo a passo, você vai criar um aplicativo simples da Web que acessa o XML Web Services TempConvert1, que foi o nome dado ao XML Web Services criado no Explicação Passo a Passo: Criando um XML Web Services usando Visual Basic ou Visual C#. Observação Se você alterou o nome do XML Web Services temperatura de conversão ao criá-lo, basta substituir os nomes apropriados onde aparece o nome TempConvert1 ao longo desta explicação passo a passo. Criar um aplicativo ASP.NET
Visual Studio
48
1.
No menu File, escolha New Web Site.
2.
Na caixa de diálogo New Web Site, selecione o ícone ASP.NET Web Site.
3.
Digite o endereço do servidor Web no qual você irá desenvolver o aplicativo da Web e especifique TempConvertClient1 como o nome do diretório, tal como " http://MyServer/TempConvertClient1 ". Por padrão, o projeto usa sua máquina local, " http://localhost ".
Observação Para alguns tipos de projeto, a caixa de texto Name está indisponível porque a especificação da localidade define o nome do projeto no lugar. Por exemplo, aplicativos da Web e XML Web Services estão localizados em um servidor Web e derivam seus nomes do diretório virtual especificado nesse servidor.
Observação Você desenvolve aplicativos da Web em um servidor de desenvolvimento. Por padrão, o servidor de desenvolvimento é sua máquina local. Tipicamente, você desenvolve e compila o projeto em um servidor de desenvolvimento e depois você o implanta em outro servidor (o servidor de implantação) que hospeda o aplicativo da Web usando um projeto de implantação. Entretanto, se você estiver desenvolvendo diretamente no servidor que hospeda o aplicativo da Web, o servidor de desenvolvimento e o servidor implantação são os mesmos. 4.
Clique em OK para criar o projeto.
5.
No Solution Explorer, clique com o botão direito do mouse em Default.aspx e escolha View Designer para abrir o designer.
6.
Da guia Web Forms da Toolbox, arraste uma Text Box, uma Label e um Button para a superfície de design de Default.aspx e organize-os ao seu gosto.
7.
Clique com o botão direito do mouse no botão adicionado, Button1, e clique em Properties no menu de atalho. Na janela Properties, defina a propriedade Text como Convert.
8.
Clique com o botão direito do mouse no rótulo adicionado, Label1, e clique em Properties no menu de atalho. Na janela Properties, desmarque a propriedade Text para fazer deste um rótulo em branco.
Adicionando uma referência da Web Descoberta de XML Web Services é o processo pelo qual um cliente localiza um XML Web Services e obtém sua descrição de serviço. O processo de descoberta de XML Web Services no Visual Studio envolve interrogar um site da Web seguindo um algoritmo predeterminado. A meta do processo é localizar a descrição de serviço, que é um documento XML que usa o WSDL (Web Services Description Language). Para obter mais informações, consulte Descoberta de XML Web Service. A descrição de serviço descreve quais serviços estão disponíveis e como interagir com os serviços. Sem uma descrição de serviço, é impossível interagir com um XML Web Services programaticamente. Para obter mais informações, consulte Descrição de XML Web Service. Seu aplicativo deve ter um meio para se comunicar com o XML Web Services e para localizá-lo em tempo de execução. Adicionar uma referência da Web ao seu projeto para o XML Web Services faz isso por gerar uma classe proxy que interfaceia com o XML Web Services e fornece uma representação local do XML Web Services. Para
Visual Studio
49
obter mais informações, consulte Referências da Web e Gerando um Proxy de XML Web Service. Adicionar uma referência da Web 1. 2.
No menu Website, escolha Add Web Reference. Na caixa URL da caixa de diálogo Add Web Reference, digite o URL para obter a descrição de serviço do XML Web Services que você deseja acessar, tal como http://localhost/TempConvert1/Service1.asmx. Clique no botão Go para recuperar informações sobre o XML Web Services. - ou Se o XML Web Services está na máquina local, clique no link Web services on the local machine no painel do navegador. Clique no link para o XML Web Services TempConvert1 na lista fornecida para recuperar informações sobre o XML Web Services.
3.
Na caixa Web reference name, renomeie a referência da Web para ConvertSvc, que é o namespace que você usará para essa referência da Web.
4.
Clique em Add Reference para adicionar uma referência da Web para o XML Web Services destino. Para obter mais informações, consulte Adicionando e Removendo Referências da Web. O Visual Studio baixa a descrição de serviço e gera uma classe proxy para interfacear entre seu aplicativo e o XML Web Services.
Acessando o XML Web Services Quando você adiciona uma referência para o XML Web Services ao seu projeto, a próxima etapa consiste em criar uma instância da classe proxy do XML Web Services. Você pode acessar os métodos do XML Web Services da mesma maneira que você acessa quaisquer métodos de objeto, chamando métodos na classe proxy. Quando o aplicativo chama esses métodos, o código da classe proxy gerado pelo Visual Studio lida com as comunicações entre seu aplicativo e o XML Web Services. Primeiro, você criará uma instância da classe proxy do XML Web Services. Em seguida, você pegará um valor, fornecido em TextBox1, e fará uma chamada para o método ConvertTemperature do XML Web Services usando a classe proxy. Você então irá exibir o valor retornado do XML Web Services no Label1. Acessar o XML Web Services 1.
2.
Clique duas vezes no botão Convert em WebForm1.aspx para criar um método de tratamento de evento para este botão e para exibir o arquivo code-behind. Insira o código a seguir: ' Visual Basic Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e as EventArgs) Handles Button1.Click Dim ws As New ConvertSvc.Service Dim dFahrenheit As Double Dim dCelsius As Double Try dFahrenheit = Convert.ToDouble(TextBox1.Text) dCelsius = ws.ConvertTemperature(dFahrenheit) Label1.Text = dCelsius.ToString() Catch Label1.Text = "Conversion failed." End Try End Sub // C# protected void Button1_Click (System.Object sender, System.EventArgs e) { try { ConvertSvc.Service1 ws = new ConvertSvc.Service1(); double dFahrenheit = Convert.ToDouble(TextBox1.Text); double dCelsius = ws.ConvertTemperature(dFahrenheit); Label1.Text = dCelsius.ToString(); } catch { Label1.Text = "Conversion failed."; } }
Visual Studio
50
Observação O nome da classe de XML Web Services gerado ao adicionar uma referência da Web pode diferir daquele mostrado acima como Service1. 3.
Selecione Default.aspx no Solution Explorer.
4.
No menu Website, clique em Set as Start Page.
5.
Salve a solução.
Para obter mais informações, consulte Acessando um XML Web Services em Código Gerenciado. Depurando o cliente de XML Web Services O Visual Studio oferece vários métodos para criar e executar um aplicativo da Web a partir do IDE, tais como: •
Start (with Debugging)
•
Start without Debugging
•
View in Browser
Como um projeto do Visual Studio, este aplicativo da Web tem configurações separadas para versões Release e Debug. Desde que você criou este projeto usando o modelo de projeto de aplicativo ASP.NET, o Visual Studio automaticamente criou essas configurações e definiu as opções padrão apropriadas e outras configurações. Para obter mais informações, consulte Configurações Debug e Release. Nesta explicação passo a passo, você colocará um ponto de interrupção no evento Button1_Click e usará o método Start (with debugging). Para obter mais informações, consulte Depurando XML Web Services em Código Gerenciado. Antes da depuração, verifique as configurações de depuração. Para obter mais informações, consulte Preparação de Depuração: Aplicativos ASP.NET. Usar um ponto de interrupção e iniciar o aplicativo da Web com depuração 1.
No menu Debug, clique em New Breakpoint e em seguida escolha Break At Function. Digite Button1_Click na caixa Function e clique em OK para colocar um ponto de interrupção no manipulador de eventos Button1_Click. Para obter mais informações, consulte Visão geral sobre pontos de interrupção.
2.
No menu Debug, clique em Start, depois clique em Ok na janela Debugging Not Enabled para iniciar a depuração. Este comando instrui o Visual Studio a executar o aplicativo da Web no depurador. O Visual Studio compila o projeto e o implanta no servidor de desenvolvimento designado. Após a conclusão, o navegador padrão inicia e navega para o arquivo .aspx no servidor implantação.
3.
Depois que a página é exibida no navegador, digite o número 212 na caixa de texto e depois clique no botão Convert. Quando o processamento atinge o manipulador de eventos Button1_Click, o processamento pára. O depurador do Visual Studio realça a linha que contém o ponto de interrupção e, enquanto interrompido, você poderá executar uma
Visual Studio
51
variedade de tarefas. Para obter mais informações, consulte Usando o Depurador e Ferramentas de Depuração para Inspeção de seu Programa. 4. 5.
No menu Debug, clique em Continue para continuar o processamento. O XML Web Services responde retornando o valor convertido e o aplicativo define o texto do Label1 para 100. Para interromper a execução do aplicativo da Web e retornar ao editor de código, no menu Debug, clique em Stop Debugging.
6.
No menu Debug, clique em Clear All Breakpoints.
Implantando o cliente Para tornar seu aplicativo da Web disponível para outros, você deve implantá-lo em um servidor Web que seja acessível para os clientes que você deseja dar suporte. Para implantar o aplicativo da Web em um servidor que não seja o servidor de desenvolvimento, você pode adicionar um Web Setup Project ou copiar os arquivos necessários para o servidor de destino. Nesta explicação passo a passo, você pode escolher como implantar este aplicativo da Web. Para obter mais informações, consulte Implantando Aplicativos e Componentes. Implantar o aplicativo da Web usando um Web Setup Project 1.
No menu File, aponte para Add e depois clique em New Project.
2.
Selecione o nó Other e depois o nó Setup and Deployment Projects e depois clique em Web Setup Project.
3.
Na caixa Name, digite TempConvertClient1WebSetup e depois clique em OK.
Observação Por padrão, o instalador usa o nome do projeto de implantação ao criar o diretório virtual em seu servidor de implantação. 4.
No painel esquerdo do File System Editor, selecione Web Application Folder. Para obter mais informações, consulte File System Editor.
5.
No Solution Explorer, clique com o botão direito do mouse em TempConvertClient1WebSetup, aponte para Add e depois clique em Project Output.
6.
Na caixa de diálogo Add Project Output Group, selecione Content Files. Para obter mais informações, consulte Adicionando e Removendo Saídas de Projetos no File System Editor.
o
O grupo Content Files consiste nos arquivos restantes para o aplicativo da Web, tais como WebForm1.aspx e Web.config.
7. 8.
Clique em OK. No Solution Explorer, clique com o botão direito do mouse no projeto TempConvertClient1WebSetup e, no menu de atalho, clique em Build. Isso cria um arquivo do Windows Installer no diretório do projeto local. Executar este arquivo instala o aplicativo da Web.
Implantar o aplicativo da Web, copiando o projeto 1.
No Solution Explorer, selecione o projeto TempConvertClient1.
2.
No menu Project, clique em Copy Web Site.
Visual Studio
52
3.
Clique no ícone ao lado da caixa suspensa Connect To para abrir a caixa de diálogo Open Web Site. Navegue para a localidade que você deseja copiar o projeto.
4.
No painel Source Web Site, selecione os arquivos para copiar e mova-os para o painel Remote Web Site, clicando no ícone da seta direita.
5.
Clique em Copy Web Site para copiar o site da Web.
Um componente com Visual C# Walkthrough: criação Componentes forneça reutilizáveis código sob a forma de objetos. É conhecido como um aplicativo que usa código é um componente,, criando objetos e chamar suas propriedades e métodos, um Cliente. Um cliente pode ou não pode estar no mesmo conjunto como um componente ele usa. Os seguintes procedimentos criar no entre si, de forma a ordem na qual você realizá-las é importante. Observação As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Criando o projeto Para criar a biblioteca de classes CDemoLib e o componente CDemo 1.
No menu File, selecione New e Project Para abrir caixa New Project de diálogo. Selecione o Class Library modelo de projeto a partir da lista de Visual C# tipos de projeto, e digite CDemoLib na caixa Name.
Observação Sempre especifique o nome de um novo projeto ao criá-la. Isso define o espaço para nome raiz, nome conjunto, e nome do projeto, e também garante que o componente padrão será no espaço para nome correto. 2.
No Solution Explorer, clique com o botão direito do mouse CDemoLib e selecione Properties a partir do menu de atalho. Observe que a Default namespace caixa contém CDemoLib. A raiz é usado para qualificar os nomes dos componentes no conjunto. Por exemplo, se dois conjuntos de módulos (assemblies) fornecer componentes nomeado CDemo, você pode especificar seu CDemo componente usando CDemoLib.CDemo
Feche a caixa de diálogo. 3. 4.
A partir do Project menu, escolha Add Component. Na caixa Add New Item de diálogo, selecione Component Class e digite CDemo.cs na caixa Name. Clique Add para crate o componente. Um componente denominado CDemo é adicionado à sua biblioteca de classe.
5.
No Solution Explorer, clique com o botão direito do mouse CDemo.cs e escolha View Code a partir do menu de atalho. Abre o editor de código.
Visual Studio
53
Aviso imediatamente após public partial class CDemo. o : Component Esta seção designa a classe da qual a classe herda. Por padrão, um componente herda da classe Component fornecida pelo sistema. A Component classe fornece vários recursos para o componente, incluindo a capacidade para usar designers. 6.
7.
No Solution Explorer, clique com o botão direito do mouse Class1.cs e escolha Delete. Isso exclui a classe padrão que é fornecido com a biblioteca de classes, como ele não será ser usado nessa explicação passo a passo. No menu File, optar Save All por salvar o projeto.
Adicionando Constructors e Destructors Construtores controlar a maneira como o componente foi inicializado; o Finalize método controla a forma ele tears pressionada. Código no construtor e o Finalize método da CDemo classe mantém uma contagem do número de CDemo objetos em execução no existência. Para adicionar código para o construtor e destruidor da classe CDemo 1.
No total de ocorrências de um número de identificação para cada instância da CDemo classe, e. Adicione variáveis de membros para manter uma execução o Code Editor public readonly int InstanceID; private static int NextInstanceID = 0; private static long ClassInstanceCount = 0;
Porque e NextInstanceID variáveis de membros são declaradas static, eles existem somente no nível de classe. o InstanceCount Todas as instâncias do CDemo que acessar esses membros usará os mesmos locais de memória. Membros estático serão inicializados na primeira vez a CDemo classe é mencionado no código. Isso pode ser a primeira vez um CDemo objeto é criado, ou na primeira vez um dos membros estático é acessado. 2.
Localizar public CDemo() e public CDemo(IContainer container), a construtores padrão para a CDemo classe. No Visual C#, todos os construtores ter o mesmo nome que a classe. O componente pode ter vários construtores, com parâmetros diferentes, mas deve todas terão o mesmo nome que o componente.
Observação O nível de acesso dos construtores determina os clientes serão capazes de criar instâncias da classe. 3.
Adicione o código a public CDemo() Seguir para incrementar a contagem instância quando um novo CDemo for criado, e para definir o número de identificação de instância.
Observação Sempre adicionar seu código após a chamada para InitializeComponent. Nesse momento, os componentes constituintes ter sido inicializada. 4.
Como um readonly membro, InstanceID pode ser definida somente no construtor.
Observação Usuários familiarizados com será multithreading destacar bastante rightly que atribuir InstanceID e incrementando NextInstanceID deve ser uma operação atômico. Isso e outros problemas relacionados a
Visual Studio
54
segmentação está ilustrado no Um componente Multithreaded Simple com Visual C# Walkthrough: criação. 6.
Adicione o seguinte método depois do fim do construtor: ~CDemo() { ClassInstanceCount --; }
Este método é chamado e é signified pelo caractere til (~) na frente do nome de classe. a destruidor, O gerenciador de memória chama o destruidor imediatamente antes ele finalmente reclaims memória ocupado pelo objeto CDemo. Ao implementar um destruidor você pode executar limpeza apenas antes o componente é removido da memória. No entanto, como você poderá ver posteriormente nessa explicação passo a passo, há bons motivos para recursos versão anterior. Adicionar uma propriedade à classe A CDemo classe tem apenas uma propriedade, uma propriedade estática que permite que o cliente para descobrir quantos CDemo objetos não estão na memória a qualquer dado momento. Métodos podem ser criados no uma maneira semelhante. Para criar uma propriedade para a classe CDemo •
Adicione a seguinte declaração propriedade à classe CDemo, para permitir que clientes se recuperar o número de instâncias do CDemo. public static long InstanceCount { get { return ClassInstanceCount; } }
Teste o componente Para testar o componente, é necessário um projeto que o utiliza. Este projeto deve ser o primeiro projeto que inicia quando você pressiona o botão Executar. Para adicionar o projeto cliente CDemoTest como o projeto de inicialização para a solução 1.
No menu File, aponte para Add e escolha New Project para abrir a Add New Project caixa de diálogo.
2.
Selecione o Windows Application modelo de projeto, digite CDemoTest na caixa Name e clique em OK.
3.
Na Solution Explorer, clique com o botão direito do mouse CDemoTest e clique na Set as Startup Project partir do menu de atalho.
Para usar o CDemo componente, o projeto teste cliente deve ter uma referência para o projeto de biblioteca de classes. Após adicionar a referência, ele é uma boa idéia para adicionar uma using instrução ao aplicativo de teste para simplificar o uso de componente. Para adicionar uma referência para o projeto de biblioteca de classes 1.
2.
Clique com botão direito no Solution Explorer, mouse no References nó imediatamente abaixo CDemoTest, e selecione Add Reference a partir do menu de atalho. Na caixa Add Reference de diálogo, selecione a Projects guia.
3.
Clique duas vezes o CDemoLib projeto de biblioteca de classes. Aparecerá CDemoLib sob o References nó para o CDemoTest projeto.
4.
No Solution Explorer, clique com o botão direito do mouse Form1.cs e selecione View Code a partir do menu de atalho.
Visual Studio
55
Ou seja, CDemoLib.CDemo adicionando a referência à CDemoLib, você pode usar o nome totalmente qualificado do componente CDemo—. Para adicionar uma usando instrução •
Adicione a instrução a seguir using para a lista de using instruções na parte superior da para Form1. o Code Editor using CDemoLib;
Adicionando a using instrução, você pode omitir o nome da biblioteca, e consultar o tipo componente como CDemo. Você agora criará e usar um programa de teste para testar o componente. Noções básicas sobre vida útil de objeto O CDemoTest programa será ilustram vida útil de objeto do .NET Framework, criando e liberar um grande número de CDemo objetos. Para adicionar código para criar objetos e versão CDemo 1. 2.
Clique Form1.cs[Design] para retornar para o designer. Arraste até a Form1 superfície de design. e Button Um Timer na guia All Windows Forms do Toolbox O componente nonvisual Timer aparece em uma superfície de design separadas abaixo do formulário.
3.
Clique duas vezes no ícone do timer1 para criar um método tratamento de eventos do evento do componente Tick timer1. Colocar o seguinte código no método tratamento de eventos. this.Text = "CDemo instances: " + CDemo.InstanceCount;
Legenda do formulário em cada escala do timer, exibirá a contagem instância atual para a CDemo classe. O nome de classe é usado como um qualificador para a propriedade — estáticos InstanceCount não está há necessidade de criar uma instância do CDemo para acessar um membro estático. 4.
Localizar o construtor para Form1 (public Form1(). e adicione o código a seguir após a chamada para InitializeComponent()), timer1.Enabled = true;
Isso irá iniciar o cronômetro tão logo o formulário é criado. 5. 6.
Clique na Form1.cs [Design] guia para retornar para o designer. Clique duas vezes no Form1, para criar um método tratamento de eventos para eventos do botão Click. o Button Colocar o seguinte código no método tratamento de eventos. CDemo cd; int ct; for (ct = 0; ct < 1000; ct++) cd = new CDemo();
Esse código pode aspecto estranhos para você. Conforme cada instância do CDemo é criado, a instância anterior será liberado. Quando o for loop for feito, haverá somente uma instância do CDemo Esquerda. Quando o método tratamento de eventos-sai, mesmo essa instância será lançado, porque a variável cd sairá do escopo. Como você pode ter guessed já não acontecem bastante dessa maneira. Para executar e depurar o CDemoTest e CDemo projetos 1.
Pressione F5 para iniciar a solução.
Visual Studio
56
O projeto cliente for iniciado, e Form1 será exibido. Observe que a legenda do formulário exibe " 0 ". instâncias CDemo: 2.
Clique no botão. A legenda do formulário deve exibir " 1000". instâncias CDemo: As instâncias de CDemo foram todos liberados pelo tempo procedimento tratamento de eventos do botão Click concluído. Por que não elas foi finalizado? Além BRIEF, o gerenciador de memória finalizes objetos em segundo plano, com prioridade baixa. A prioridade apenas é bumped backup se obtém o Sistema com memória insuficiente. Este lenta esquema coleção lixo permite a alocação Objeto muito rápida.
3.
Clique no botão Mais várias vezes, observando a legenda. Em algum momento, o número de instâncias irá descartar inesperadamente Isso significa o gerenciador de memória que tem recuperou a memória de alguns dos objetos. Observação Se você clicou mais de 10 vezes, e o número de CDemo instâncias não tiver diminuído, talvez precise ajustar o código de modo que ele usa mais memória. Fechar o formulário para retornar ao ambiente de desenvolvimento, e aumentar o número de iterações no for loop para 10000. Em seguida, execute o projeto novamente.
4.
Repita a etapa 3. Você obterá farther neste momento antes o gerenciador de memória finalizes mais objetos. Na verdade, sempre que você repita a etapa 3, você provavelmente será capaz para alocar mais CDemo objetos antes a memória etapas Gerenciador no. Isso é porque mais e mais dos Visual Studio é trocado Out, deixando mais espaço para instâncias de CDemo.
5.
Fechar o formulário para retornar ao ambiente de desenvolvimento.
Tarefas comuns usando marcas inteligentes em controles Forms Windows fazendo Walkthrough: Como você construir formulários e controles para seu aplicativo do Windows Forms, há várias tarefas você executará repetidamente. Estes são alguns das tarefas realizadas normalmente você encontrará: •
Adicionar ou remover uma guia na uma TabControl.
•
Encaixe um controle para seu pai.
•
Alterar a orientação de um SplitContainer controle.
Para acelerar o desenvolvimento, muitos controles oferecem marcas inteligentes que são menus contextuais que permitem a você para executar tarefas comuns como essas em um único gesto em tempo de criação. Essas tarefas são chamados verbos de marca inteligente. Marcas inteligentes permanecem anexado a uma instância de controle para sua vida útil no designer e estão sempre disponíveis. Tarefas ilustradas nesta explicação passo a passo incluem: •
Criar um Projeto Windows Forms
Visual Studio
57
•
Usando marcas inteligentes
•
Habilitando e desabilitando marcas inteligentes
Quando você tiver terminado, você terá uma compreensão da função executado por esses recursos importantes layout. Observação As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Criando o projeto A primeira etapa é para criar o projeto e configurar o formulário. Para criar o projeto 1.
2.
Criar um projeto chamado " SmartTagsExample " aplicativo baseado no Windows. Para obter detalhes, consulte Como: Criar um projeto de aplicativos Windows. Selecione o formulário no Windows Forms Designer.
Usando marcas inteligentes Marcas inteligentes estão sempre em tempo de criação em controles que oferecemlos disponíveis. Para usar marcas inteligentes 1.
Arraste até o formulário. de um TabControl a Toolbox Observe o glifo de marca inteligente ( . o TabControl) que aparece na parte lateral do
2.
Clique o glifo de marca inteligente. No menu de atalho que aparece ao lado o glifo, selecione o Add Tab item. Observar se uma nova página guia foi adicionado ao TabControl.
3. 4.
5. 6.
Arraste um TableLayoutPanel controle de até seu formulário. o Toolbox Clique o glifo de marca inteligente. No menu de atalho que aparece ao lado o glifo, selecione o Add Column item. Observar que uma nova coluna será adicionada para o TableLayoutPanel controle. Arraste um SplitContainer controle de até seu formulário. o Toolbox Clique o glifo de marca inteligente. No menu de atalho que aparece ao lado o glifo, selecione o Horizontal splitter orientation item. Observar que a SplitContainer barra divisora do controle agora é orientado horizontalmente.
Coleções dos tipos padrão com o DesignerSerializationVisibilityAttribute Serializing Walkthrough: Às vezes os controles personalizados será expor uma coleção como uma propriedade. Essa explicação passo a passo demonstra como usar a DesignerSerializationVisibilityAttribute classe para controlar como uma coleção é serializado em tempo de criação. Aplicar o Content valor a sua propriedade coleção garante que a propriedade será ser serializado.
Visual Studio
58
Para copiar o código contidas neste tópico como uma lista simples, consulte COMO: Serializar coleções de tipos padrão com o DesignerSerializationVisibilityAttribute. Observação As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Pré-requisitos A fim de concluir este explicação passo a passo, será necessário: •
Permissões suficientes para poder para criar e executar projetos aplicativo do Windows Forms no computador onde o Visual Studio está instalado. Criar um controle que possui uma coleção Serializable
A primeira etapa consiste em criar um controle que tenha uma coleção Serializable como uma propriedade. Você pode editar o conteúdo da coleção usando este que você pode acessar a partir da Properties janela. o Collection Editor Para criar um controle com uma coleção Serializable 1.
Criar um Projeto Biblioteca de Controle do Windows chamado SerializationDemoControlLib. Para obter mais informações, consulte Modelo de Biblioteca de Controle do Windows.
2.
Renomear UserControl1 para SerializationDemoControl. Para obter mais informações, consulte Renomear identificadores como:.
3.
Na janela Properties, defina o valor da propriedade System.Windows.Forms.Padding.All para 10.
4. 5.
Coloca um TextBox controle no SerializationDemoControl. Selecione o TextBox controle. Na janela Properties, defina as propriedades a seguir.
Propriedade
Alterar para
Multiline
true
Dock
Fill
ScrollBars
Vertical
ReadOnly
true
6.
Em declarar um campo denominado stringsValue na SerializationDemoControl matriz de seqüência. o Code Editor C# // This field backs the Strings property. private String[] stringsValue = new String[1];
7.
Defina a Strings propriedade no SerializationDemoControl.
Observação O Content valor é usado para ativar a serialização de coleção. C#
Visual Studio
59
// When the DesignerSerializationVisibility attribute has // a value of "Content" or "Visible" the designer will // serialize the property. This property can also be edited // at design time with a CollectionEditor. [DesignerSerializationVisibility( DesignerSerializationVisibility.Content )] public String[] Strings { get { return this.stringsValue; } set { this.stringsValue = value; // Populate the contained TextBox with the values // in the stringsValue array. StringBuilder sb = new StringBuilder(this.stringsValue.Length); for (int i = 0; i < this.stringsValue.Length; i++) { sb.Append(this.stringsValue[i]); sb.Append("\r\n"); } this.textBox1.Text = sb.ToString(); } }
Observação As seqüências que você digitou aparecem na TextBox. do SerializationDemoControl A serialização uma propriedade da coleção Para testar o comportamento serialização do seu controle, você será colocar ele em um formulário e alterar o conteúdo da coleção com o Collection Editor.. o Collection Editor Você pode ver o estado coleção serializado olhando para um arquivo de designer especial, no qual código emite. o Windows Forms Designer Para serializar uma coleção 1.
Adicionar um projeto do Aplicativo do Windows à solução. Para obter mais informações, consulte Caixa de diálogo Add New Project. Nome do projeto SerializationDemoControlTest.
2.
Na Toolbox, localização na guia chamado SerializationDemoControlLib Components. Em nessa guia, você encontrará o SerializationDemoControl. Para obter mais informações, consulte A caixa de ferramentas com Components personalizado Walkthrough: Populating automaticamente.
3. 4.
5.
Local em seu formulário. um SerializationDemoControl Localizar a Strings propriedade na janela Properties. Clique a Strings propriedade, na elipse seguida, clique no String Collection Editor. ( botão para abrir
)
Digitar várias seqüências no String Collection Editor. Separe-os, pressionando a tecla ENTER no final de cada seqüência. Clique em OK Quando você tiver terminado inserir seqüências.
Observação As seqüências que você digitou aparecem na TextBox. do SerializationDemoControl 1.
No Solution Explorer, clique no Show All Files botão.
2.
Abra o Form1 nó. Beneath é um arquivo chamado Form1.Designer.cs ou Form1.Designer.vb. Este é o arquivo no qual emite código que representa o estado de seu formulário e seus controles filho Design-time. o Windows Forms Designer Abrir este arquivo no Code Editor.
3.
Abra a região denominada Windows Form Designer generated code e localize a seção rotulada serializationDemoControl1. Sob este rótulo é o código que representa o estado de seu controle serializado. As seqüências você digitou na etapa 5 aparecem em uma atribuição para a Strings propriedade. O exemplo de código a seguir mostra um código semelhante ao que será exibida se você digitado seqüências " red ", " laranjas ", e " Amarelo ".
Visual Studio
60
C# this.serializationDemoControl1.Strings = new string[] { "red", "orange", "yellow"};
Observação Nesse caso, emite nenhuma atribuição para a Strings propriedade. o Windows Forms Designer Próximas etapas Depois que você sabe como serializar uma coleção de tipos padrão, considere integrar os controles personalizados mais profundamente para o ambiente em tempo de criação. Os tópicos a seguir descrevem como aprimorar a integração em tempo de criação do seu controles personalizados: •
Arquitetura Design-time
•
Atributos do Windows Forms controles
•
Visão geral da serialização designer
•
Criando um controle do Windows Forms que Takes Advantage dos recursos de tempo de design visual studio Walkthrough:
Walkthrough: depuração controles Forms do Windows personalizados em tempo de design Quando você cria um controle personalizado, você geralmente achará necessário para depurar seu comportamento em tempo de criação. Isso é especialmente verdadeiro se você estiver criando um designer personalizado para o controle personalizado. Para obter detalhes, consulte Criando um controle do Windows Forms que Takes Advantage dos recursos de tempo de design visual studio Walkthrough:. Você pode depurar os controles personalizados usando o Visual Studio, exatamente como você deseja depurar as outras classes .NET Framework. A diferença é que você irá depurar uma instância separada do Visual Studio que esteja executando código do seu controle personalizado Tarefas ilustradas nesta explicação passo a passo incluem: •
Criar um Projeto Windows Forms para hospedar o controle personalizado
•
Criar um Projeto Biblioteca de Controle
•
Adicionar uma propriedade a seu controle personalizado
•
Adicionando o controle personalizado ao formulário host
•
Como configurar o projeto para design-time depuração
•
Depuração seu controle personalizado em tempo de criação
Quando você tiver terminado, você terá uma compreensão das tarefas necessárias para depuração o comportamento em tempo de criação de um controle personalizado.
Visual Studio
61
Observação As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Criando o projeto A primeira etapa consiste em criar o projeto de aplicativo. Você usará este projeto para criar o aplicativo que hospeda o controle personalizado. Para criar o projeto •
Criar um projeto do Aplicativo do Windows chamado " DebuggingExample ". Para obter detalhes, consulte Como: Criar um projeto de aplicativos Windows. Criar um Projeto Biblioteca de Controle
A próxima etapa é para criar o projeto Biblioteca de Controle e configurar o controle personalizado. Para criar o projeto Biblioteca de Controle 1.
Adicione um Windows Control Library projeto para a solução. Para obter detalhes, consulte Caixa de diálogo Add New Project. Nome do projeto " DebugControlLibrary ".
2.
Adicionar um novo UserControl item para o projeto DebugControlLibrary. Para obter detalhes, consulte Como: Adicionar novos itens de projeto. Dê o novo arquivo de origem uma nome de base de " DebugControl ".
3.
Usando a Solution Explorer, exclusão, excluindo o arquivo com um nome de base de código padrão do projeto controlar " " UserControl1. Para obter detalhes, consulte COMO: Remover, excluir, e excluir itens.
4.
Compilar uma solução.
Ponto de Verificação Neste ponto, você será capaz para ver o controle personalizado no Toolbox. Para verificar o seu andamento •
Localizar o nova guia chamada DebugControlLibrary Components e clique para selecioná-lo. Ao ser aberto, você verá seu controle listados como DebugControl com o ícone padrão ao lado dela. Adicionar uma propriedade ao seu controle personalizado
Para demonstrar que o controle personalizado na código sendo executado em tempo de criação, será adicionar uma propriedade e definir um ponto de interrupção no código que implementa a propriedade. Para adicionar uma propriedade ao seu controle personalizado 1.
Aberto DebugControl no Code Editor. Adicione o seguinte código para a definição de classe: C# private string demoStringValue = null; [Browsable(true)] public string DemoString { get
Adicionando seu controle personalizado ao formulário host Para depurar o comportamento em tempo de criação do seu controle personalizado, você irá colocar uma instância da classe controle personalizado em um formulário host. Para adicionar o controle personalizado ao formulário host 1.
No projeto " DebuggingExample ", abra Form1 no Windows Forms Designer.
2.
Na Toolbox, abra a DebugControlLibrary Components guia e arraste uma DebugControl instância para o formulário.
3.
Localizar a DemoString propriedade personalizada na janela Properties. Observação que você pode alterar seu valor como você faria qualquer outra propriedade. Também Observe que quando a DemoString propriedade está selecionada, seqüência de caracteres de descrição da propriedade aparece na parte inferior da janela Properties.
Configurando o Project para depuração de tempo de design Você para depurar comportamento em tempo de criação do seu controle personalizado, será depurar uma instância separada do Visual Studio que esteja executando código do seu controle personalizado. Para configurar o projeto para design-time depuração 1.
Clique com o botão direito do mouse no projeto DebugControlLibrary no e selecione Properties. o Solution Explorer
2.
Na folha DebugControlLibrary de propriedades, selecione a Debug guia. Na seção Start Action, marque Start external program. Não será depuração uma instância separada do Visual Studio, portanto clique a elipse. ( ) botão para procurar por Visual Studio IDE O nome do arquivo executável é devenv.exe, e se você instalado para o local padrão, seu caminho será " 8\Common7\IDE\devenv.exe Visual Studio C:\Program Files\Microsoft ".
3. 4.
Clique OK para fechar a caixa de diálogo. Clique com o botão direito do mouse o DebugControlLibrary projeto e selecione Set as StartUp Project Para ativar essa configuração de depuração.
Depuração seu controle personalizado em tempo de design Agora você está pronto para depurar o controle personalizado à medida que ele é executado em modo de design. Quando você iniciar a sessão de depuração, será criada uma nova instância do Visual Studio, e irá usá-lo para carregar a solução " DebuggingExample ". Quando você abre Form1 em uma instância do seu controle personalizado será criado e será iniciado executando. o Forms Designer Para depurar o controle personalizado em tempo de criação 1.
Abrir o DebugControl arquivo de origem no e colocar um ponto de interrupção no Set acessador da propriedade DemoString. o Code Editor
Visual Studio
63
2.
Pressione F5 para iniciar a sessão de depuração. Observe que uma nova instância do Visual Studio é criado. Você pode distinguir entre as instâncias de duas maneiras: A instância de depuração tem a palavra Running em sua barra de
o
título o
A instância de depuração tem o Start Botão em sua Debug barra de ferramentas desativado O ponto de interrupção é definido na instância de depuração.
3.
4.
Na nova instância do Visual Studio, abra a solução " DebuggingExample ". A solução você pode localizar facilmente selecionando Recent Projects no File menu. O arquivo solução " DebuggingExample.sln " será listado como o arquivo mais recentemente usado. Abrir Form1 em e selecione o DebugControl controle. o Forms Designer
5.
Alterar o valor da propriedade DemoString. Observe que quando você confirmar a alteração, a instância de depuração do Visual Studio obtém foco e a execução pára em seu ponto de interrupção. Você pode passo único através o acessador Propriedade exatamente como. seria qualquer outro código seu
6.
Quando você tiver terminado com a sessão de depuração, você pode sair, descartando a instância do Visual Studio hospedado ou clicando no Stop Debugging botão na instância de depuração.
Próximas etapas Agora que você pode depurar os controles personalizados em tempo de criação, existem muitas possibilidades para expandir o controle na interação com o Visual Studio IDE. •
Você pode usar a DesignMode propriedade da classe Component para escrever código que será executada apenas em tempo de criação Para obter detalhes, consulte DesignMode.
•
Há vários atributos você pode aplicar a propriedades seu controle para manipular o controle personalizado na interação com o designer. Você pode encontrar esses atributos no espaço para nome System.ComponentModel.
•
Você pode escrever um designer personalizado para o controle personalizado. Isso permite total controle sobre a experiência de design usando a infra-estrutura extensível Designer expostos pelo Visual Studio. Para obter detalhes, consulte Criando um controle do Windows Forms que Takes Advantage dos recursos de tempo de design visual studio Walkthrough:.
Criando um controle do Windows Forms que Takes Advantage dos recursos de tempo de design visual studio Walkthrough: A experiência em tempo de design para um controle personalizado pode ser aperfeiçoada pela criação um designer personalizado associado. Essa explicação passo a passo ilustra como criar um designer personalizado para um controle personalizado. Você irá implementar um MarqueeControl tipo e uma classe designer associado, chamado MarqueeControlRootDesigner. O MarqueeControl tipo implementa uma exibição semelhante a um letreiro digital theater, com luzes animado e texto flashing.
Visual Studio
64
O designer para este controle interage com o ambiente de design para fornecer uma experiência Design-time personalizado. Com o designer personalizado, você pode montar uma implementação personalizada MarqueeControl com luzes animado e flashing texto em várias combinações. Você pode usar o controle montado em um formulário como qualquer outro controle Windows Forms. Tarefas ilustradas nesta explicação passo a passo incluem: •
Criando o projeto
•
Criar um Projeto Biblioteca de Controle
•
Referência a Project controle personalizado
•
Definir um controle personalizado e seus designer personalizado
•
Criando uma instância de seu controle personalizado
•
Configurando o Project para depuração de tempo de design
•
Implementar O controle personalizado
•
Criando um controle filho para O controle personalizado
•
Criar o controle filho MarqueeBorder
•
Criando um designer personalizado para sombra e propriedades de filtro
•
Tratamento alterações componente
•
Adicionando verbos criador ao seu designer personalizado
•
Criando um UITypeEditor personalizada
•
Testando o controle personalizado no criador
Quando você tiver terminado, o controle personalizado será algo como o seguinte aspecto:
Para a listagem código completo, consulte COMO: Criar um controle de formulários do Windows que tira vantagem de recursos em tempo de criação. Observação As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Pré-requisitos A fim de concluir este explicação passo a passo, será necessário: •
Permissões suficientes para poder para criar e executar projetos aplicativo do Windows Forms no computador onde o Visual Studio está instalado. Criando o projeto
Visual Studio
65
A primeira etapa consiste em criar o projeto de aplicativo. Você usará este projeto para criar o aplicativo que hospeda o controle personalizado. Para criar o projeto •
Criar um projeto do Aplicativo do Windows chamado " MarqueeControlTest ". Para obter mais informações, consulte Como: Criar um projeto de aplicativos Windows. Criar um Projeto Biblioteca de Controle
A próxima etapa consiste em criar o projeto Biblioteca de Controle. Você criará um novo controle personalizado e seu designer personalizado correspondente. Para criar o projeto Biblioteca de Controle 1.
Adicione um projeto Biblioteca de Controle do Windows para a solução. Para obter mais informações, consulte Caixa de diálogo Add New Project. Nome do projeto " MarqueeControlLibrary ".
2.
Usando Solution Explorer, Excluir controle padrão do projeto, excluir o arquivo de origem nomeado " UserControl1.cs " ou " UserControl1.vb ", acordo com o idioma de escolha. Para obter mais informações, consulte COMO: Remover, excluir, e excluir itens.
3.
Adicionar um novo UserControl item para o MarqueeControlLibrary projeto. Dar o novo arquivo de origem uma nome de base de " MarqueeControl ".
4.
Usando Solution Explorer, criar uma nova pasta no projeto MarqueeControlLibrary. Para obter mais informações, consulte Como: Adicionar novos itens de projeto.Nomeie a nova pasta " Design ".
5.
Clique com o botão direito do mouse na Design pasta e adicionar uma nova classe. Fornecer o arquivo de origem uma nome de base de " MarqueeControlRootDesigner ".
6.
Será necessário para usar tipos de montagem System.Design, então adicionar essa referência para o MarqueeControlTest projeto. Para obter mais informações, consulte COMO: Adicionar e remover referências no Visual Studio (C#, J#).
Referência a Project controle personalizado Você usará o MarqueeControlTest projeto para testar o controle personalizado. O projeto teste tornará conhecer o controle personalizado quando você adiciona uma referência ao conjunto MarqueeControlLibrary Projeto. Para fazer referência o projeto de controle personalizado •
No projeto MarqueeControlTest, adicione uma referência ao conjunto MarqueeControlLibrary Projeto. Certifique-se de usar a Projects guia na caixa Add Reference de diálogo em vez de referência montagem MarqueeControlLibrary diretamente. Definir um controle personalizado e seus designer personalizado
O controle personalizado será derivar a partir da UserControl classe. Isso permite que o controle para conter outros controles, e ele fornece o controle uma grande quantidade de funcionalidade padrão. O controle personalizado não terá um designer personalizado associado. Isso permite que você para criar uma experiência design exclusivo adequado especificamente para o controle personalizado.
Visual Studio
66
Você associar o controle ao seu designer, usando a DesignerAttribute classe. O designer personalizado porque você estiver desenvolvendo o comportamento Design-time inteiro do seu controle personalizado, será implementa a IRootDesigner interface. Para definir um controle personalizado e seu designer personalizado 1.
Abrir o MarqueeControl arquivo de origem no Code Editor. Na parte superior do arquivo, importar os espaços para nome a seguir: C# using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.Design;
2.
Adicionar a declaração da MarqueeControl Classe. o DesignerAttribute Isto associa o controle personalizado com seu designer. C# [Designer( typeof( MarqueeControlLibrary.Design.MarqueeControlRootDesigner ), typeof( IRootDesigner ) )] public class MarqueeControl : UserControl {
3.
Abrir o MarqueeControlRootDesigner arquivo de origem no Code Editor. Na parte superior do arquivo, importar os espaços para nome a seguir: C# using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Drawing.Design; using System.Windows.Forms; using System.Windows.Forms.Design;
4.
Coloque a definição para a MarqueeControlRootDesigner classe entre um espaço para nome chamado " MarqueeControlLibrary.Design ". Esta Declaração coloca o designer em um espaço para nome especial reservado para tipos relacionados design-. Além disso, alterar da declaração do MarqueeControlRootDesigner para herdar da classe DocumentDesigner. C# namespace MarqueeControlLibrary.Design { [ToolboxItemFilter("MarqueeControlLibrary.MarqueeBorder", ToolboxItemFilterType.Require)] [ToolboxItemFilter("MarqueeControlLibrary.MarqueeText", ToolboxItemFilterType.Require)] [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Deman d, Name = "FullTrust")] public class MarqueeControlRootDesigner : DocumentDesigner {
5.
Definir o construtor para a MarqueeControlRootDesigner classe. Inserir uma WriteLine instrução no corpo construtor. Este será útil para fins de depuração. C# public MarqueeControlRootDesigner() { Trace.WriteLine("MarqueeControlRootDesigner ctor"); }
Criando uma instância de seu controle personalizado Para observar o comportamento em tempo de design personalizado do seu controle, você irá colocar uma instância do seu controle no formulário no MarqueeControlTest projeto.
Visual Studio
67
Para criar uma instância de seu controle personalizado 1.
Adicionar um novo UserControl item para o MarqueeControlTest projeto. Dar o novo arquivo de origem uma nome de base de " DemoMarqueeControl ".
2.
Na parte superior do arquivo, importar espaço para nome MarqueeControlLibrary: Visual Basic Imports MarqueeControlLibrary using MarqueeControlLibrary;
3.
Alterar da declaração do DemoMarqueeControl para herdam a MarqueeControl classe.
Visual Basic Public Class DemoMarqueeControl Inherits MarqueeControl public class DemoMarqueeControl : MarqueeControl
4.
Criar o projeto.
5.
Aberto Form1 no Windows Forms Designer.
6. 7.
Localizar na guia " Meus Controles de usuário " na e abri-lo. o Toolbox Arraste até o formulário. de um DemoMarqueeControl a Toolbox Criar o projeto.
Configurando o Project para depuração de tempo de design Quando você estiver desenvolvendo uma experiência Design-time personalizado, ele será necessário para depurar o controles e componentes. Não é uma maneira simples para instalar o seu projeto para permitir a depuração em tempo de criação. Para obter mais informações, consulte Walkthrough: depuração controles Forms do Windows personalizados em tempo de design. Para configurar o projeto para design-time depuração 1.
Clique com o botão direito do mouse o MarqueeControlLibrary projeto e selecione Properties.
2.
Na caixa de diálogo ' páginas Propriedades MarqueeControlLibrary ', selecione a Configuration Properties página.
3.
Na seção Start Action, marque Start External Program. Não será depuração uma instância separada do Visual Studio, portanto clique a elipse. ( ) botão para procurar por Visual Studio IDE O nome do arquivo executável é devenv.exe, e se você instalado para o local padrão, seu caminho será " .NET\Common7\IDE\devenv.exe Visual Studio C:\Program Files\Microsoft. "
4. 5.
Clique OK para fechar a caixa de diálogo. Clique com o botão direito do mouse o MarqueeControlLibrary projeto e selecione Definir como Projeto iniciar para ativar essa configuração de depuração " ".
Ponto de Verificação Você está pronto para depurar o comportamento em tempo de criação do seu controle personalizado. Após você ter determinado se o ambiente de depuração está configurada corretamente, você testará a associação entre o controle personalizado e o designer personalizado. Para testar o ambiente de depuração e a associação de designer
Visual Studio
68
1.
Abrir o MarqueeControlRootDesigner arquivo de origem no e coloque um ponto de interrupção na instrução WriteLine. o Code Editor
2.
Pressione F5 para iniciar a sessão de depuração. Observe que uma nova instância do Visual Studio é criado.
3.
Na nova instância do Visual Studio, abra a solução " MarqueeControlTest ". A solução você pode localizar facilmente selecionando Recent Projects no File menu. O arquivo solução " MarqueeControlTest.sln " será listado como o arquivo mais recentemente usado.
4.
Aberto no designer. o DemoMarqueeControl Observe que a instância de depuração do Visual Studio obtém foco e a execução pára em seu ponto de interrupção. Pressione F5 para continuar a sessão de depuração.
Neste ponto, tudo está no lugar para que você possa desenvolver e depurar o controle personalizado e seu designer personalizado associado. Se o restante dessa explicação passo a passo será concentrar nos detalhes da implementação recursos do controle e o criador. Implementar O controle personalizado O MarqueeControl com um pouco de personalização. é um UserControl Ela expõe dois métodos: Start, que inicia a animação Letreiro digital, e Stop, que interrompe a animação. Porque e StopMarquee métodos, respectivamente, em cada filho controlar que implementa IMarqueeWidget. contém controles filho que implementa a IMarqueeWidget interface, Start e Stop Enumerar cada controle filho e chamada ao MarqueeControlStartMarquee
A aparência do e MarqueeText controles é dependente para o layout, então MarqueeControl substitui o OnLayout método e chama PerformLayout em controles filho desse tipo. o MarqueeBorder Isso é a extensão das personalizações MarqueeControl. Os recursos de tempo de execução são implementadas pelo e MarqueeControlRootDesigner Classes. e MarqueeText controles, e os recursos em tempo de criação são implementadas pelo MarqueeBorder o MarqueeBorderDesigner Para implementar o Controle Personalizado 1.
Abrir o MarqueeControl arquivo de origem no Code Editor. Implementar e Stop Métodos. o Start C# public void Start() { // The MarqueeControl may contain any number of // controls that implement IMarqueeWidget, so // find each IMarqueeWidget child and call its // StartMarquee method. foreach( Control cntrl in this.Controls ) { if( cntrl is IMarqueeWidget ) { IMarqueeWidget widget = cntrl as IMarqueeWidget; widget.StartMarquee(); } } } public void Stop() { // The MarqueeControl may contain any number of // controls that implement IMarqueeWidget, so find // each IMarqueeWidget child and call its StopMarquee // method. foreach( Control cntrl in this.Controls ) { if( cntrl is IMarqueeWidget ) { IMarqueeWidget widget = cntrl as IMarqueeWidget; widget.StopMarquee(); } } }
2.
Substituir o OnLayout método. C# protected override void OnLayout(LayoutEventArgs levent) { base.OnLayout (levent); // Repaint all IMarqueeWidget children if the layout // has changed. foreach( Control cntrl in this.Controls ) { if( cntrl is IMarqueeWidget ) { Control control = cntrl as Control; control.PerformLayout(); } } }
Visual Studio
69
Criando um controle filho para O controle personalizado O MarqueeControl: o MarqueeBorder controle e o MarqueeText controle. hospedará dois tipos de controle filho MarqueeBorder esse controle pinta uma borda de " luz " ao redor suas bordas.
•
O memória flash luzes em seqüência, para que eles apareçam para ser mover-se a borda. A velocidade na qual o memória flash luzes é controlada pela propriedade chamado UpdatePeriod. Várias outras propriedades personalizadas determinar outros aspectos da aparência do controle. Dois métodos, chamado StartMarquee e StopMarquee, controle quando a animação inicia e interrompe. •
MarqueeText esse controle pinta uma seqüência flashing. Como o MarqueeBorder controle, a velocidade na qual o texto pisca é controlada pela propriedade UpdatePeriod. O MarqueeText controle tem também e StopMarquee métodos em comum com o MarqueeBorder controle. o StartMarquee
Em tempo de criação, em qualquer combinação. permite esses tipos dois controle a ser adicionado à MarqueeControlRootDesigner uma MarqueeControl Recursos comuns dos dois controles são factored em uma interface denominada IMarqueeWidget. Isso permite para descobrir os controles filho relacionados MARQUEE-e conceda a eles Tratamento especial. o MarqueeControl Para implementar o recurso animação periódicos, você irá usar BackgroundWorker objetos de espaço para nome System.ComponentModel. Você pode usar Timer objetos, mas quando vários IMarqueeWidget objetos estão presentes, o segmento de UI único pode ser impossível acompanhar a animação. Para criar um controle filho para o controle personalizado 1.
Adicionar um novo item classe ao projeto MarqueeControlLibrary. Dar o novo arquivo de origem uma nome de base de " IMarqueeWidget ".
2.
Abrir o IMarqueeWidget arquivo de origem no e alterar a declaração de class para interface: o Code Editor C# // This interface defines the contract for any class that is to // be used in constructing a MarqueeControl. public interface IMarqueeWidget {
3.
Adicione o seguinte código para a IMarqueeWidget interface para expor dois métodos e uma propriedade que manipulam a animação Letreiro digital: C# // This interface defines the contract for any class that is to // be used in constructing a MarqueeControl. public interface IMarqueeWidget { // This method starts the animation. If the control can // contain other classes that implement IMarqueeWidget as // children, the control should call StartMarquee on all // its IMarqueeWidget child controls. void StartMarquee(); // This method stops the animation. If the control can // contain other classes that implement IMarqueeWidget as // children, the control should call StopMarquee on all // its IMarqueeWidget child controls.
Visual Studio
70
void StopMarquee(); // This method specifies the refresh rate for the animation, // in milliseconds. int UpdatePeriod { get; set; } }
4.
Adicionar um novo UserControl item para o MarqueeControlLibrary projeto. Dar o novo arquivo de origem uma nome de base de " MarqueeText ".
5.
Arraste um BackgroundWorker componente de até seu MarqueeText controle. o Toolbox Esse componente permitirá que o MarqueeText controle para atualizar próprio assincronamente.
6.
Na janela Propriedades, defina as BackgroundWorker propriedades para true e WorkerSupportsCancellation do componente WorkerReportsProgess. Essas configurações permitem que o BackgroundWorker Componente para aumentar o ProgressChanged evento periodicamente e para cancelar Atualizações assíncronas. Para obter mais informações, consulte Componente BackgroundWorker.
7.
Abrir o MarqueeText arquivo de origem no Code Editor. Na parte superior do arquivo, importar os espaços para nome a seguir: C# using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Drawing; using System.Threading; using System.Windows.Forms; using System.Windows.Forms.Design;
8.
Alterar da declaração do MarqueeText para herdar de Label e para implementar a IMarqueeWidget interface: C# [ToolboxItemFilter("MarqueeControlLibrary.MarqueeText", ToolboxItemFilterType.Require)] public class MarqueeText : Label, IMarqueeWidget {
9.
Declare as variáveis que correspondem às propriedades expostos, instância e inicializar-los no construtor. O isLit campo determina se o texto está para ser pintura com a cor determinado pela LightColor propriedade. C# // When isLit is true, the text is painted in the light color; // When isLit is false, the text is painted in the dark color. // This value changes whenever the BackgroundWorker component // raises the ProgressChanged event. private bool isLit = true; // These fields back the public properties. private int updatePeriodValue = 50; private Color lightColorValue; private Color darkColorValue; // These brushes are used to paint the light and dark // colors of the text. private Brush lightBrush; private Brush darkBrush; // This component updates the control asynchronously. private BackgroundWorker backgroundWorker1; public MarqueeText() { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); // Initialize light and dark colors // to the control's default values. this.lightColorValue = this.ForeColor; this.darkColorValue = this.BackColor; this.lightBrush = new SolidBrush(this.lightColorValue); this.darkBrush = new SolidBrush(this.darkColorValue); }
10. Implementa a IMarqueeWidget interface.
Visual Studio
71
O StartMarquee e StopMarquee chamar métodos do componente RunWorkerAsync e BackgroundWorkerCancelAsync métodos para iniciar e parar a animação. O Category e Browsable atributos são aplicadas para a UpdatePeriod propriedade para ele apareça em uma seção personalizado da janela Propriedades chamada " digital ". C# public virtual void StartMarquee() { // Start the updating thread and pass it the UpdatePeriod. this.backgroundWorker1.RunWorkerAsync(this.UpdatePeriod); } public virtual void StopMarquee() { // Stop the updating thread. this.backgroundWorker1.CancelAsync(); } [Category("Marquee")] [Browsable(true)] public int UpdatePeriod { get { return this.updatePeriodValue; } set { if (value > 0) { this.updatePeriodValue = value; } else { throw new ArgumentOutOfRangeException("UpdatePeriod", "must be > 0"); } } }
11. Implementar a assessores Propriedade. Você irá expor duas propriedades aos clientes: LightColor e DarkColor. O Category e Browsable atributos são aplicados a essas propriedades, para as propriedades apareçam em uma seção personalizado da janela Propriedades chamada " digital ". C# [Category("Marquee")] [Browsable(true)] public Color LightColor { get { return this.lightColorValue; } set { // The LightColor property is only changed if the // client provides a different value. Comparing values // from the ToArgb method is the recommended test for // equality between Color structs. if (this.lightColorValue.ToArgb() != value.ToArgb()) { this.lightColorValue = value; this.lightBrush = new SolidBrush(value); } } } [Category("Marquee")] [Browsable(true)] public Color DarkColor { get { return this.darkColorValue; } set { // The DarkColor property is only changed if the // client provides a different value. Comparing values // from the ToArgb method is the recommended test for // equality between Color structs. if (this.darkColorValue.ToArgb() != value.ToArgb()) { this.darkColorValue = value; this.darkBrush = new SolidBrush(value); } } }
12. Implementar os manipuladores para o BackgroundWorker componente na DoWork e ProgressChanged eventos. O DoWork manipulador de eventos sleeps para o número de milissegundos especificado pelo UpdatePeriod raises depois o ProgressChanged evento, até parar a animação ao chamar CancelAsync seu código. O ProgressChanged manipulador de eventos alterna o texto entre seu estado para dar a aparência de flashing claras e escuras. C# // This method is called in the worker thread's context, // so it must not make any calls into the MarqueeText control. // Instead, it communicates to the control using the // ProgressChanged event. // // The only work done in this event handler is // to sleep for the number of milliseconds specified // by UpdatePeriod, then raise the ProgressChanged event. private void backgroundWorker1_DoWork( object sender, System.ComponentModel.DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; // This event handler will run until the client cancels // the background task by calling CancelAsync. while (!worker.CancellationPending) { // The Argument property of the DoWorkEventArgs // object holds the value of UpdatePeriod, which // was passed as the argument to the RunWorkerAsync //
Visual Studio
72
method. Thread.Sleep((int)e.Argument); // The DoWork eventhandler does not actually report // progress; the ReportProgress event is used to // periodically alert the control to update its state. worker.ReportProgress(0); } } // The ProgressChanged event is raised by the DoWork method. // This event handler does work that is internal to the // control. In this case, the text is toggled between its // light and dark state, and the control is told to // repaint itself. private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) { this.isLit = !this.isLit; this.Refresh(); }
13. Substituir o OnPaint método para ativar a animação. C# protected override void OnPaint(PaintEventArgs e) { // The text is painted in the light or dark color, // depending on the current value of isLit. this.ForeColor = this.isLit ? this.lightColorValue : this.darkColorValue; base.OnPaint(e); }
Criar o controle filho MarqueeBorder O MarqueeBorder controle é um pouco mais sofisticado que o MarqueeText controle. Ele tem mais propriedades e a animação no método OnPaint está mais envolvido. Em princípio, ele é bastante semelhante ao controle MarqueeBorder. Porque o MarqueeBorder controle pode ter controles filho, ele precisará estar ciente de Layout eventos. Para criar o controle MarqueeBorder 1.
Adicionar um novo UserControl item para o MarqueeControlLibrary projeto. Dar o novo arquivo de origem uma nome de base de " MarqueeBorder ".
2.
Arraste um BackgroundWorker componente de até seu MarqueeBorder controle. o Toolbox Esse componente permitirá que o MarqueeBorder controle para atualizar próprio assincronamente.
3.
Na janela Propriedades, defina as BackgroundWorker propriedades para true e WorkerSupportsCancellation do componente WorkerReportsProgess. Essas configurações permitem que o BackgroundWorker Componente para aumentar o ProgressChanged evento periodicamente e para cancelar Atualizações assíncronas. Para obter mais informações, consulte Componente BackgroundWorker.
4.
Abrir o MarqueeBorder arquivo de origem no Code Editor. Na parte superior do arquivo, importar os espaços para nome a seguir: C# using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Drawing; using System.Drawing.Design; using System.Threading; using System.Windows.Forms; using System.Windows.Forms.Design;
5.
Alterar da declaração da MarqueeBorder Herdar do Panel e para implementar a
IMarqueeWidget interface.
C# [Designer(typeof(MarqueeControlLibrary.Design.MarqueeBorderDesigner ))] [ToolboxItemFilter("MarqueeControlLibrary.MarqueeBorder", ToolboxItemFilterType.Require)] public class MarqueeBorder : Panel, IMarqueeWidget {
Visual Studio
73
6.
Declarar dois enumerações de gerenciamento de estado do MarqueeBorder controle: MarqueeSpinDirection, que determina a direção na qual as luzes " girar " ao redor da borda, e MarqueeLightShape, que determina a forma das luzes (quadrado ou circular). Coloque essas declarações antes declaração da MarqueeBorder classe. C# // This defines the possible values for the MarqueeBorder // control's SpinDirection property. public enum MarqueeSpinDirection { CW, CCW } // This defines the possible values for the MarqueeBorder // control's LightShape property. public enum MarqueeLightShape { Square, Circle }
7.
Declare as variáveis que correspondem às propriedades expostos, instância e inicializar-los no construtor. C# public static int MaxLightSize = 10; // These fields back the public properties. private int updatePeriodValue = 50; private int lightSizeValue = 5; private int lightPeriodValue = 3; private int lightSpacingValue = 1; private Color lightColorValue; private Color darkColorValue; private MarqueeSpinDirection spinDirectionValue = MarqueeSpinDirection.CW; private MarqueeLightShape lightShapeValue = MarqueeLightShape.Square; // These brushes are used to paint the light and dark // colors of the marquee lights. private Brush lightBrush; private Brush darkBrush; // This field tracks the progress of the "first" light as it // "travels" around the marquee border. private int currentOffset = 0; // This component updates the control asynchronously. private System.ComponentModel.BackgroundWorker backgroundWorker1; public MarqueeBorder() { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); // Initialize light and dark colors // to the control's default values. this.lightColorValue = this.ForeColor; this.darkColorValue = this.BackColor; this.lightBrush = new SolidBrush(this.lightColorValue); this.darkBrush = new SolidBrush(this.darkColorValue); // The MarqueeBorder control manages its own padding, // because it requires that any contained controls do // not overlap any of the marquee lights. int pad = 2 * (this.lightSizeValue + this.lightSpacingValue); this.Padding = new Padding(pad, pad, pad, pad); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); }
8.
Implementa a IMarqueeWidget interface. O StartMarquee e StopMarquee chamar métodos do componente RunWorkerAsync e BackgroundWorkerCancelAsync métodos para iniciar e parar a animação. Como o MarqueeBorder controle pode conter controles filho, o StartMarquee método enumera todos os controles filho e chama StartMarquee naqueles que implementam IMarqueeWidget. O StopMarquee método tem uma implementação semelhante. C# public virtual void StartMarquee() { // The MarqueeBorder control may contain any number of // controls that implement IMarqueeWidget, so find // each IMarqueeWidget child and call its StartMarquee // method. foreach (Control cntrl in this.Controls) { if (cntrl is IMarqueeWidget) { IMarqueeWidget widget = cntrl as IMarqueeWidget; widget.StartMarquee(); } } // Start the updating thread and pass it the UpdatePeriod. this.backgroundWorker1.RunWorkerAsync(this.UpdatePeriod); } public virtual void
Visual Studio
74
StopMarquee() { // The MarqueeBorder control may contain any number of // controls that implement IMarqueeWidget, so find // each IMarqueeWidget child and call its StopMarquee // method. foreach (Control cntrl in this.Controls) { if (cntrl is IMarqueeWidget) { IMarqueeWidget widget = cntrl as IMarqueeWidget; widget.StopMarquee(); } } // Stop the updating thread. this.backgroundWorker1.CancelAsync(); } [Category("Marquee")] [Browsable(true)] public virtual int UpdatePeriod { get { return this.updatePeriodValue; } set { if (value > 0) { this.updatePeriodValue = value; } else { throw new ArgumentOutOfRangeException("UpdatePeriod", "must be > 0"); } } }
Implementar a assessores Propriedade. O MarqueeBorder controle tem várias propriedades para controlar sua aparência. C# [Category("Marquee")] [Browsable(true)] public int LightSize { get { return this.lightSizeValue; } set { if (value > 0 && value <= MaxLightSize) { this.lightSizeValue = value; this.DockPadding.All = 2 * value; } else { throw new ArgumentOutOfRangeException("LightSize", "must be > 0 and < MaxLightSize"); } } } [Category("Marquee")] [Browsable(true)] public int LightPeriod { get { return this.lightPeriodValue; } set { if (value > 0) { this.lightPeriodValue = value; } else { throw new ArgumentOutOfRangeException("LightPeriod", "must be > 0 "); } } } [Category("Marquee")] [Browsable(true)] public Color LightColor { get { return this.lightColorValue; } set { // The LightColor property is only changed if the // client provides a different value. Comparing values // from the ToArgb method is the recommended test for // equality between Color structs. if (this.lightColorValue.ToArgb() != value.ToArgb()) { this.lightColorValue = value; this.lightBrush = new SolidBrush(value); } } } [Category("Marquee")] [Browsable(true)] public Color DarkColor { get { return this.darkColorValue; } set { // The DarkColor property is only changed if the // client provides a different value. Comparing values // from the ToArgb method is the recommended test for // equality between Color structs. if (this.darkColorValue.ToArgb() != value.ToArgb()) { this.darkColorValue = value; this.darkBrush = new SolidBrush(value); } } } [Category("Marquee")] [Browsable(true)] public int LightSpacing { get { return this.lightSpacingValue; } set { if (value >= 0) { this.lightSpacingValue = value; } else { throw new ArgumentOutOfRangeException("LightSpacing", "must be >= 0"); } } } [Category("Marquee")] [Browsable(true)] [EditorAttribute(typeof(LightShapeEditor), typeof(System.Drawing.Design.UITypeEditor))] public MarqueeLightShape LightShape { get { return this.lightShapeValue; } set { this.lightShapeValue = value; } } [Category("Marquee")] [Browsable(true)] public MarqueeSpinDirection SpinDirection { get { return this.spinDirectionValue; } set { this.spinDirectionValue = value; } }
9.
Implementar os manipuladores para o BackgroundWorker componente na DoWork e ProgressChanged eventos. O DoWork manipulador de eventos sleeps para o número de milissegundos especificado pelo UpdatePeriod raises depois o ProgressChanged evento, até parar a animação ao chamar CancelAsync seu código. O ProgressChanged manipulador de eventos aumenta a posição da luz " base ", do qual o estado luz / escuro de outros luzes é determinado, e chama o Refresh método para fazer com que o controle para redesenhar próprio. C#
Visual Studio
75
// This method is called in the worker thread's context, // so it must not make any calls into the MarqueeBorder // control. Instead, it communicates to the control using // the ProgressChanged event. // // The only work done in this event handler is // to sleep for the number of milliseconds specified // by UpdatePeriod, then raise the ProgressChanged event. private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; // This event handler will run until the client cancels // the background task by calling CancelAsync. while (!worker.CancellationPending) { // The Argument property of the DoWorkEventArgs // object holds the value of UpdatePeriod, which // was passed as the argument to the RunWorkerAsync // method. Thread.Sleep((int)e.Argument); // The DoWork eventhandler does not actually report // progress; the ReportProgress event is used to // periodically alert the control to update its state. worker.ReportProgress(0); } } // The ProgressChanged event is raised by the DoWork method. // This event handler does work that is internal to the // control. In this case, the currentOffset is incremented, // and the control is told to repaint itself. private void backgroundWorker1_ProgressChanged( object sender, System.ComponentModel.ProgressChangedEventArgs e) { this.currentOffset++; this.Refresh(); }
10. Implementar os métodos auxiliar, IsLit e DrawLight. O IsLit método determina a cor de uma luz em uma posição determinado. Luzes que são " lit " são tiradas com a cor determinado por propriedade LightColor, e aqueles que são " escuro " são tiradas com a cor determinado pela DarkColor propriedade. O DrawLight método desenha uma luz utilizando a cor apropriada, Forma, e posição. C# // This method determines if the marquee light at lightIndex // should be lit. The currentOffset field specifies where // the "first" light is located, and the "position" of the // light given by lightIndex is computed relative to this // offset. If this position modulo lightPeriodValue is zero, // the light is considered to be on, and it will be painted // with the control's lightBrush. protected virtual bool IsLit(int lightIndex) { int directionFactor = (this.spinDirectionValue == MarqueeSpinDirection.CW ? -1 : 1); return ( (lightIndex + directionFactor * this.currentOffset) % this.lightPeriodValue == 0 ); } protected virtual void DrawLight( Graphics g, Brush brush, int xPos, int yPos) { switch (this.lightShapeValue) { case MarqueeLightShape.Square: { g.FillRectangle(brush, xPos, yPos, this.lightSizeValue, this.lightSizeValue); break; } case MarqueeLightShape.Circle: { g.FillEllipse(brush, xPos, yPos, this.lightSizeValue, this.lightSizeValue); break; } default: { Trace.Assert(false, "Unknown value for light shape."); break; } } }
11. Substituir e OnPaint Métodos. o OnLayout O OnPaint método desenha as luzes ao longo das bordas do controle MarqueeBorder. Como o OnPaint método dependerá da dimensões do controle MarqueeBorder, você precisa para chamar ele sempre que for alterado o layout. Para isso, substituir OnLayout e chame Refresh. C#
Visual Studio
76
protected override void OnLayout(LayoutEventArgs levent) { base.OnLayout(levent); // Repaint when the layout has changed. this.Refresh(); } // This method paints the lights around the border of the // control. It paints the top row first, followed by the // right side, the bottom row, and the left side. The color // of each light is determined by the IsLit method and // depends on the light's position relative to the value // of currentOffset. protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.Clear(this.BackColor); base.OnPaint(e); // If the control is large enough, draw some lights. if (this.Width > MaxLightSize && this.Height > MaxLightSize) { // The position of the next light will be incremented // by this value, which is equal to the sum of the // light size and the space between two lights. int increment = this.lightSizeValue + this.lightSpacingValue; // Compute the number of lights to be drawn along the // horizontal edges of the control. int horizontalLights = (this.Width - increment) / increment; // Compute the number of lights to be drawn along the // vertical edges of the control. int verticalLights = (this.Height - increment) / increment; // These local variables will be used to position and // paint each light. int xPos = 0; int yPos = 0; int lightCounter = 0; Brush brush; // Draw the top row of lights. for (int i = 0; i < horizontalLights; i++) { brush = IsLit(lightCounter) ? this.lightBrush : this.darkBrush; DrawLight(g, brush, xPos, yPos); xPos += increment; lightCounter++; } // Draw the lights flush with the right edge of the control. xPos = this.Width - this.lightSizeValue; // Draw the right column of lights. for (int i = 0; i < verticalLights; i++) { brush = IsLit(lightCounter) ? this.lightBrush : this.darkBrush; DrawLight(g, brush, xPos, yPos); yPos += increment; lightCounter++; } // Draw the lights flush with the bottom edge of the control. yPos = this.Height this.lightSizeValue; // Draw the bottom row of lights. for (int i = 0; i < horizontalLights; i++) { brush = IsLit(lightCounter) ? this.lightBrush : this.darkBrush; DrawLight(g, brush, xPos, yPos); xPos -= increment; lightCounter++; } // Draw the lights flush with the left edge of the control. xPos = 0; // Draw the left column of lights. for (int i = 0; i < verticalLights; i++) { brush = IsLit(lightCounter) ? this.lightBrush : this.darkBrush; DrawLight(g, brush, xPos, yPos); yPos -= increment; lightCounter++; } } }
Criando um designer personalizado para sombra e propriedades de filtro A MarqueeControlRootDesigner classe fornece a implementação para o designer raiz. Além deste Designer, que opera em será necessário um designer personalizado que está associado ao controle MarqueeBorder especificamente. o MarqueeControl Este criador fornece personalizado comportamento que seja apropriado no contexto do designer raiz personalizado. Especificamente, o MarqueeBorderDesigner será " sombra " e filtrar certas propriedades sobre o MarqueeBorder Controle, alterar sua interação com o ambiente de design. Interceptando chamadas para um componente na propriedade acessador é conhecido como " Sombreamento. " Ele permite que um designer para controlar o valor definido pelo usuário e opcionalmente passar esse valor para o componente está sendo criado. Para esse exemplo, que impede o usuário de fazer o MarqueeBorder controle invisível ou desativado durante o tempo de design. e Enabled será propriedades ser sombreado pela Visible o MarqueeBorderDesigner Os designers também pode adicionar e remover propriedades. Para esse exemplo, a DockPadding propriedade será removido em tempo de criação, porque o MarqueeBorder controle programaticamente Define o enchimento com base no tamanho das luzes especificado pela propriedade LightSize.
Visual Studio
77
A classe base de MarqueeBorderDesigner é ComponentDesigner, que tem métodos que pode alterar os atributos, propriedades e eventos expostos por um controle em tempo de criação: •
PreFilterProperties
•
PostFilterProperties
•
PreFilterAttributes
•
PostFilterAttributes
•
PreFilterEvents
•
PostFilterEvents
Ao alterar a interface pública de um componente usar esses métodos, você deve seguir estas regras: •
Adicionar ou remover itens no apenas os PreFilter métodos
•
Modificar itens existentes em apenas os PostFilter métodos
•
Sempre chamar o implementação básica primeiro nos PreFilter métodos
•
Sempre chamar o implementação básica última nos PostFilter métodos
Adhering com essas regras garante que todos os designers no ambiente Designtime tenham uma exibição consistente de todos os componentes que está sendo criado. A ComponentDesigner classe fornece um dicionário para gerenciar os valores das propriedades sombreado, que relieves você da necessidade para criar variáveis instância específica. Para criar um designer personalizado às propriedades de sombra e filtro 1.
Clique com o botão direito do mouse na Design pasta e adicionar uma nova classe. Fornecer o arquivo de origem uma nome de base de " MarqueeBorderDesigner ".
2.
Abrir o MarqueeBorderDesigner arquivo de origem no Code Editor. Na parte superior do arquivo, importar os espaços para nome a seguir: C# using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Windows.Forms; using System.Windows.Forms.Design;
3.
Alterar da declaração do MarqueeBorderDesigner para herdar de ParentControlDesigner, e delimite a definição para a MarqueeBorderDesigner classe com espaço para nome MarqueeControlLibrary.Design. Como o MarqueeBorder controle pode conter controles filho, MarqueeBorderDesigner herdado ParentControlDesigner, qual interação alças o pai-filho. C# namespace MarqueeControlLibrary.Design { [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Deman d, Name = "FullTrust")] public class MarqueeBorderDesigner : ParentControlDesigner {
4.
Substituir o implementação básica de PreFilterProperties. C#
Visual Studio
78
protected override void PreFilterProperties(IDictionary properties) { base.PreFilterProperties(properties); if (properties.Contains("Padding")) { properties.Remove("Padding"); } properties["Visible"] = TypeDescriptor.CreateProperty( typeof(MarqueeBorderDesigner), (PropertyDescriptor)properties["Visible"], new Attribute[0]); properties["Enabled"] = TypeDescriptor.CreateProperty( typeof(MarqueeBorderDesigner), (PropertyDescriptor)properties["Enabled"], new Attribute[0]); }
5.
Implementar e Visible Propriedades. o Enabled Essas implementações sombra propriedades do controle. C# public bool Visible { get { return (bool)ShadowProperties["Visible"]; } set { this.ShadowProperties["Visible"] = value; } } public bool Enabled { get { return (bool)ShadowProperties["Enabled"]; } set { this.ShadowProperties["Enabled"] = value; } }
Tratamento alterações componente A MarqueeControlRootDesigner classe fornece a experiência Design-time personalizadas para sua MarqueeControl instâncias. A maior parte da funcionalidade Design-time é herdada da classe DocumentDesigner; seu código será implementar dois personalizações específicas: tratamento alterações componente, e adicionar verbos Designer. Como usuários criar suas MarqueeControl instâncias, o designer raiz acompanhará alterações e seus controles filho. o MarqueeControl O ambiente em tempo de design oferece um serviço conveniente, IComponentChangeService, para rastreamento altera para estado componente. Você adquirir uma referência a esse serviço consultando o ambiente com o GetService método. Se a consulta for bem-sucedida, o designer pode anexar um manipulador para o ComponentChanged evento e executar quaisquer tarefas são necessários para manter um estado consistente em tempo de criação. Você no caso da MarqueeControlRootDesigner classe, irá chamar o Refresh método em cada IMarqueeWidget objeto contido no MarqueeControl. Isso fará com que o IMarqueeWidget objeto para redesenhar próprio adequadamente quando propriedades como seu pai Size são alteradas. Para lidar com alterações componente 1.
Abrir o MarqueeControlRootDesigner arquivo de origem no e substituem o Initialize Método. o Code Editor Chamar o implementação básica de Initialize e para consultar o IComponentChangeService. C# base.Initialize(component); IComponentChangeService cs = GetService(typeof(IComponentChangeService)) as IComponentChangeService; if (cs != null) { cs.ComponentChanged += new ComponentChangedEventHandler(OnComponentChanged); }
2.
Implementar o OnComponentChanged manipulador de eventos. Testar tipo do componente de envio, e se ele for. chamar o Refresh método an IMarqueeWidget, C# private void OnComponentChanged( object sender, ComponentChangedEventArgs e) { if (e.Component is IMarqueeWidget) { this.Control.Refresh(); } }
Visual Studio
79
Adicionando verbos criador ao seu designer personalizado Um verbo Designer é um comando de menu vinculado a um manipulador de eventos. Verbos Designer são adicionadas ao menu de atalho é um componente em tempo de criação. Para obter mais informações, consulte DesignerVerb. Você adicionará dois verbos Designer a seu designers: Run Test e Stop Test. Esses verbos permitirá que você para exibir o comportamento em tempo de execução do em tempo de criação. o MarqueeControl Esses verbos será adicionado ao MarqueeControlRootDesigner. O manipulador de eventos verbo quando Run Test é chamado, irá chamar o StartMarquee método no MarqueeControl. O manipulador de eventos verbo quando Stop Test é chamado, irá chamar o StopMarquee método no MarqueeControl. A implementação do e StopMarquee métodos chamar esses métodos em controles que implementam IMarqueeWidget, contidos para os controles contidos IMarqueeWidget também participará do teste. o StartMarquee Para adicionar verbos designer ao seu designers personalizados 1.
Na MarqueeControlRootDesigner Classe, adicione manipuladores de evento chamado OnVerbRunTest e OnVerbStopTest. C# private void OnVerbRunTest(object sender, EventArgs e) { MarqueeControl c = this.Control as MarqueeControl; c.Start(); } private void OnVerbStopTest(object sender, EventArgs e) { MarqueeControl c = this.Control as MarqueeControl; c.Stop(); }
2.
Se conectar esses manipuladores de eventos a seus verbos Designer correspondente. Herda MarqueeControlRootDesigner da sua classe base. um DesignerVerbCollection Você irá criar dois objetos novos DesignerVerb e adicioná-los a essa coleção no método Initialize. C# this.Verbs.Add( new DesignerVerb("Run Test", new EventHandler(OnVerbRunTest)) ); this.Verbs.Add( new DesignerVerb("Stop Test", new EventHandler(OnVerbStopTest)) );
Criando um UITypeEditor personalizada Quando você criar uma experiência Design-time personalizados para usuários, geralmente é desejável para criar uma interação com a janela Propriedades Personalizadas. Você pode fazer isso criando um UITypeEditor. Para obter mais informações, consulte Como criar um editor tipo UI:. O MarqueeBorder controle expõe várias propriedades na janela Propriedades. Duas dessas propriedades, MarqueeSpinDirection e MarqueeLightShape são representadas por enumerações. Para ilustrar o uso de um editor tipo UI, a MarqueeLightShape propriedade terá uma classe Associado UITypeEditor. Para criar um tipo personalizado UI Editor 1. 2.
Abrir o MarqueeBorder arquivo de origem no Code Editor. Na definição da classe MarqueeBorder, declare uma classe denominada LightShapeEditor que deriva de UITypeEditor. C# // This class demonstrates the use of a custom UITypeEditor. // It allows the MarqueeBorder control's LightShape property // to be changed at design time using a customized UI element //
Visual Studio
80
that is invoked by the Properties window. The UI is provided // by the LightShapeSelectionControl class. internal class LightShapeEditor : UITypeEditor {
3.
Declarar uma IWindowsFormsEditorService variável chamada editorService instância. C# private IWindowsFormsEditorService editorService = null;
4.
Substituir o GetEditStyle método. Essa implementação retorna DropDown, que informa o ambiente de design como serão exibidas a LightShapeEditor. C# public override UITypeEditorEditStyle GetEditStyle( System.ComponentModel.ITypeDescriptorContext context) { return UITypeEditorEditStyle.DropDown; }
5.
Substituir o EditValue método. Essa implementação consulta o ambiente de design para um IWindowsFormsEditorService objeto. Se tiver êxito, ele criará um LightShapeSelectionControl. O DropDownControl método é chamado para iniciar o LightShapeEditor. O valor de retorno desta chamada é retornado para o ambiente de design. C# public override object EditValue( ITypeDescriptorContext context, IServiceProvider provider, object value) { if (provider != null) { editorService = provider.GetService( typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService; } if (editorService != null) { LightShapeSelectionControl selectionControl = new LightShapeSelectionControl( (MarqueeLightShape)value, editorService); editorService.DropDownControl(selectionControl); value = selectionControl.LightShape; } return value; }
Criando um controle de exibição para seu UITypeEditor personalizada 1.
A MarqueeLightShape propriedade oferece suporte dois tipos de formas luz: Square e Circle. Você criará um controle personalizado usado somente para o propósito de graficamente exibindo esses valores na janela Propriedades. Este controle personalizado será usado pelo para interagir com a janela Propriedades. seu UITypeEditor
Para criar um controle de exibição para seu UI personalizado Editor tipo 1.
Adicionar um novo UserControl item para o MarqueeControlLibrary projeto. Dar o novo arquivo de origem uma nome de base de " LightShapeSelectionControl ".
2.
Arraste dois Panel controles da Toolbox. até a LightShapeSelectionControl Nome-los squarePanel e circlePanel. Organizá-los lado a lado. Definir a Size propriedade de ambos os Panel controles para (60, 60). Defina a Location propriedade do controle squarePanel para (8, 10). Defina a Location propriedade do controle circlePanel para (80, 10). Finalmente, defina a Size propriedade do (150, 80). para o LightShapeSelectionControl
3. 4.
Abrir o LightShapeSelectionControl arquivo de origem no Code Editor. Implementar Click manipuladores de eventos para e circlePanel controles. o squarePanel Esses métodos chamar CloseDropDown para encerrar a sessão de edição personalizada UITypeEditor.
Declarar uma MarqueeLightShape variável chamada lightShapeValue instância. C# private MarqueeLightShape lightShapeValue = MarqueeLightShape.Square;
6.
No Construtor LightShapeSelectionControl, anexar os Click manipuladores de eventos para e circlePanel eventos controles ' Click. o squarePanel Além disso, atribuir o MarqueeLightShape Valor do ambiente de design para o lightShapeValue campo. C# // This constructor takes a MarqueeLightShape value from the // design-time environment, which will be used to display // the initial state. public LightShapeSelectionControl( MarqueeLightShape lightShape, IWindowsFormsEditorService editorService ) { // This call is required by the designer. InitializeComponent(); // Cache the light shape value provided by the // design-time environment. this.lightShapeValue = lightShape; // Cache the reference to the editor service. this.editorService = editorService; // Handle the Click event for the two panels. this.squarePanel.Click += new EventHandler(squarePanel_Click); this.circlePanel.Click += new EventHandler(circlePanel_Click); }
7.
No método Dispose, desanexar os Click manipuladores de eventos. C# protected override void Dispose( bool disposing ) { if( disposing ) { // Be sure to unhook event handlers // to prevent "lapsed listener" leaks. this.squarePanel.Click -= new EventHandler(squarePanel_Click); this.circlePanel.Click -= new EventHandler(circlePanel_Click); if(components != null) { components.Dispose(); } } base.Dispose( disposing ); }
8.
Implementar a LightShape propriedade. C# // LightShape is the property for which this control provides // a custom user interface in the Properties window. public MarqueeLightShape LightShape { get { return this.lightShapeValue; } set { if( this.lightShapeValue != value ) { this.lightShapeValue = value; } } }
9.
Substituir o OnPaint método. Essa implementação será desenhar um quadrado sólido e círculo. Ele também realçará o valor selecionado desenhando uma borda ao redor de uma forma ou o outro. C# protected override void OnPaint(PaintEventArgs e) { base.OnPaint (e); using( Graphics gSquare = this.squarePanel.CreateGraphics(), gCircle = this.circlePanel.CreateGraphics() ) { // Draw a filled square in the client area of // the squarePanel control. gSquare.FillRectangle( Brushes.Red, 0, 0, this.squarePanel.Width, this.squarePanel.Height ); // If the Square option has been selected, draw a // border inside the squarePanel. if( this.lightShapeValue == MarqueeLightShape.Square ) {
Visual Studio
82
gSquare.DrawRectangle( Pens.Black, 0, 0, this.squarePanel.Width-1, this.squarePanel.Height-1); } // Draw a filled circle in the client area of // the circlePanel control. gCircle.Clear( this.circlePanel.BackColor ); gCircle.FillEllipse( Brushes.Blue, 0, 0, this.circlePanel.Width, this.circlePanel.Height ); // If the Circle option has been selected, draw a // border inside the circlePanel. if( this.lightShapeValue == MarqueeLightShape.Circle ) { gCircle.DrawRectangle( Pens.Black, 0, 0, this.circlePanel.Width-1, this.circlePanel.Height-1); } } }
Testando o controle personalizado no criador Neste ponto, você pode criar o MarqueeControlLibrary projeto. Você pode criar um controle que herda da classe MarqueeControl e utilizá-la em um formulário. Para criar uma implementação MarqueeControl personalizado 1.
Aberto DemoMarqueeControl no modo de design. Isso irá criar uma instância do tipo DemoMarqueeControl e exibi-lo em uma instância do tipo MarqueeControlRootDesigner.
2.
Na Toolbox, abrir a MarqueeControlLibrary Components guia. Você verá e MarqueeText Controles disponíveis para seleção. o MarqueeBorder
3.
Arraste uma instância do controle MarqueeBorder para a DemoMarqueeControl superfície de design. Ancorar esse MarqueeBorder controle para o controle pai.
4.
Arraste uma instância do controle MarqueeText para a DemoMarqueeControl superfície de design.
5. 6.
7.
Compilar uma solução. Selecione e clique em seu glifo Marca Inteligente. o DemoMarqueeControl Selecione a Run Test opção para iniciar a animação. Clique Stop Test para parar a animação. Aberto Form1 no modo estrutura.
8.
Colocar dois Button controles no formulário. Nome-los startButton e stopButton. e alterar os Text valores de propriedade para " Iniciar " e " parar ", respectivamente
9.
Implementar Click manipuladores de eventos para ambos os Button controles.
10. Na Toolbox, abrir a MarqueeControlTest Components guia. Você verá disponíveis para seleção. o DemoMarqueeControl 11. Arraste uma instância de DemoMarqueeControl até a Form1 superfície de design. 12. Nos Click manipuladores de eventos, chamar a Start. e Stop métodos na DemoMarqueeControl
Visual Basic Private Sub startButton_Click(sender As Object, e As System.EventArgs) Me.demoMarqueeControl1.Start() End Sub 'startButton_Click Private Sub stopButton_Click(sender As Object, e As System.EventArgs) Me.demoMarqueeControl1.Stop() End Sub 'stopButton_Click private void startButton_Click(object sender, System.EventArgs e) { this.demoMarqueeControl1.Start(); } private void stopButton_Click(object sender, System.EventArgs e) { this.demoMarqueeControl1.Stop(); }
13. Definir o MarqueeControlTest projeto como o projeto de inicialização e executá-lo. Você verá o formulário exibindo seu DemoMarqueeControl. Clique no
Visual Studio
83
botão Iniciar para iniciar a animação. Você verá o texto piscando e as luzes mover-se a borda. Próximas etapas O MarqueeControlLibrary demonstra uma implementação de controles personalizados e designers associado simples. Você pode fazer esse exemplo mais sofisticados de várias maneiras: •
Alterar os valores de propriedade no criador. o DemoMarqueeControl Adicionar mais MarqueBorder controles e ancorado-los em suas instâncias pai para criar um efeito aninhadas. Faça suas experiências com configurações diferentes para as UpdatePeriod propriedades relacionadas luz-e o.
•
Criar suas próprias implementações de IMarqueeWidget. Por exemplo, você pode, criar " Um sinal néon flashing " ou um sinal animado com várias imagens.
•
Personalizar a experiência Design-time. Você pode tentar sombreamento mais propriedades que Enabled e Visible. e você pode adicionar novas propriedades Adicionar novos verbos Designer para simplificar tarefas comuns como encaixe controles filho.
•
A MarqueeControl Licença. Para obter mais informações, consulte Como: Licenciar componentes e controles.
•
Controlar como os controles são serializados e como código for gerado para eles. Para obter mais informações, consulte Geração e compilação de código fonte dinâmico .
Um controle composto com Visual C# Walkthrough: criação Controles Composite fornecem um meio pelo qual personalizado interfaces gráfica podem ser criadas e reutilizado. Um controle composto é essencialmente um componente com uma representação visual. Como tal, ele pode consistir de um ou mais Windows Forms controles, componentes, ou blocos de código que pode estender funcionalidade, validar a entrada do usuário, modificar propriedades de vídeo, ou executar outras tarefas necessárias para o autor. Composição em controles podem ser colocados no Windows Forms em da mesma maneira que outros controles. Na primeira parte dessa explicação passo a passo, você criar um controle composto simples chamado ctlClock. Na segunda parte da explicação passo a passo, você estender a funcionalidade de ctlClock através de herança. Observação As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Criando o projeto Quando você cria um novo projeto, você especificar seu nome para definir o raiz, nome conjunto, e nome do projeto, e garantir que o componente padrão será no espaço para nome correto. Para criar a biblioteca controle ctlClockLib e o controle ctlClock 1.
No menu File, aponte para New, e clique Project para abrir a New Project caixa de diálogo.
Visual Studio
84
2.
A partir da lista de Visual C# projetos, selecione o Windows Control Library modelo de projeto, digite ctlClockLib na caixa Name, e, em seguida clique em OK O projeto nome, ctlClockLib, também é atribuída para a raiz por padrão. A raiz é usado para qualificar os nomes dos componentes no conjunto. Por exemplo, se dois conjuntos de módulos (assemblies) fornecer componentes nomeado ctlClock, você pode especificar seu ctlClock componente usando ctlClockLib.ctlClock.
3.
No Solution Explorer, clique com o botão direito do mouse UserControl1.cs e clique em Rename.Alterar o nome do arquivo para ctlClock.cs. Clique no Yes botão quando lhe for perguntado se você desejar renomear todas as referências para o elemento de código " UserControl1 ". Observação Por padrão, um controle composto herda da classe UserControl fornecida pelo sistema. A UserControl classe fornece funcionalidade exigido pelo composto todos os controles, e implementa os métodos padrão e as propriedades.
4.
No menu File, clique Save All para salvar o projeto.
Adicionando Windows controles e componentes para o controle composto Uma interface visual é uma parte essencial de seu controle composto. Esta interface visual é implementado pela adição de um ou mais controles do Windows para a superfície de designer. Na demonstração a seguir, você irá incorporar Windows controles em seu controle composto e escrever código para implementar funcionalidade. Para adicionar um rótulo e um timer a seu controle composto 1. 2.
No Solution Explorer, clique com o botão direito do mouse ctlClock.cs e clique em View Designer. Em expanda o Common Controls nó, e clique duas vezes Label. o Toolbox Um Label controle denominado label1 é adicionado a seu controle na superfície de designer.
3.
4.
No designer, clique em label1. Na janela Propriedades, defina as propriedades a seguir. Propriedade
Alterar para
Name
lblDisplay
Text
(espaço em branco)
TextAlign
MiddleCenter
Font.Size
14
Em expanda o Components nó, e clique duas vezes Timer. o Toolbox Porque ele tem sem representação visual em tempo de execução. é um componente, um Timer Portanto, ele não é exibido com os controles na superfície Designer, mas sim em (uma bandeja na parte inferior da superfície designer). o Component Designer
5.
Na ‘ Component Designer, clique timer1, e defina a Interval propriedade 1000 e a Enabled propriedade true.
Visual Studio
85
A Interval propriedade controla a freqüência com a qual o Timer Componente Ticks. Cada ticks tempo timer1, ele executa o código no evento timer1_Tick. O intervalo representa o número de milissegundos entre tiques. 6.
Na Component Designer, clique duas vezes timer1 Para ir para o timer1_Tick evento para ctlClock.
7.
Modificar o código para que ele parecido com o exemplo de código a seguir. Certifique-se de alterar o modificador de private acesso para protected. [C#] protected void timer1_Tick(object sender, System.EventArgs e) { // Causes the label to display the current time. lblDisplay.Text = DateTime.Now.ToLongTimeString(); }
Este código fará com que a hora atual a ser mostrado no lblDisplay. Porque o intervalo de timer1 estava definido para 1000, esse evento ocorrerá cada milissegundos de milhar, assim atualizando o horário atual a cada segundo. 8.
Modificar o método para ser assessor pela palavra-chave virtual. Para obter mais informações, consulte a seção " Inheriting de um controle Usuário " abaixo. protected virtual void timer1_Tick(object sender, System.EventArgs e)
9.
No menu File, clique Save All para salvar o projeto.
Adicionar propriedades ao controle composto O controle relógio agora encapsula um Label controle e um Timer componente, cada um com seu próprio conjunto de propriedades herdadas. Enquanto a propriedades individuais desses controles não irá ser acessíveis aos usuários subseqüentes do seu controle, você pode criar e Expor propriedades personalizadas Escrevendo os blocos de código apropriada. No procedimento a seguir, você adicionará as propriedades para o controle que permitem ao usuário para alterar a cor do plano de fundo e texto. Para adicionar uma propriedade para o controle composto 1.
No Solution Explorer, clique com o botão direito do mouse ctlClock.cs e clique em View Code. O Code Editor para o controle abre.
2.
Localize a public partial class ctlClock instrução. Sob o Brace abertura ({)., digite o seguinte código [C#] private Color colFColor; private Color colBColor;
Essas instruções criar as variáveis particulares que você vai usar para armazenar os valores para as propriedades você está prestes a criar. 3.
Digite o seguinte código abaixo as declarações de variável da etapa 2. [C#] // Declares the name and type of the property. public Color ClockBackColor { // Retrieves the value of the private variable colBColor. get { return colBColor; } // Stores the selected value in the private variable colBColor, and // updates the background color of the label control lblDisplay. set { colBColor = value; lblDisplay.BackColor = colBColor; } } // Provides a similar set of instructions for the foreground color. public Color ClockForeColor { get { return colFColor; } set { colFColor = value; lblDisplay.ForeColor = colFColor; } }
Visual Studio
86
O código antecedente torna duas propriedades personalizadas, ClockForeColor e ClockBackColor, Usuários disponíveis para subseqüentes deste controle. O get e set fornecer instruções para armazenamento e recuperação de valor da propriedade,, bem como código para implementar funcionalidade apropriado para a propriedade. 4.
No menu File, clique Save All para salvar o projeto.
Teste o controle Controles são aplicativos não autônoma; eles deve ser hospedado em um contêiner. Testar comportamento em tempo de execução do seu controle e exercer suas propriedades com o UserControl Test Container. Para obter mais informações, consulte HOW TO: testar o comportamento de um UserControl RunTime. Para testar o controle 1.
Pressione F5 para criar o projeto e executar o controle no UserControl Test Container.
2.
Na grade, o Contêiner de Teste na propriedade a ClockBackColor propriedade, localize e selecione a propriedade para exibir a paleta de cores.
3.
Escolha uma cor para selecioná-lo. A cor plano de fundo de seu controle alterada para a cor selecionada.
4.
Use uma seqüência de eventos semelhante para verificar se a ClockForeColor propriedade está funcionando como esperado. Nesta seção e as seções anteriores, você já viu como componentes e Windows controles podem ser combinados com código e embalagem para fornecer funcionalidade na forma de um controle de composição personalizado. Você aprendeu para expor as propriedades em seu controle composto, e como testar o controle depois que ele for concluída. Na próxima seção você aprenderá como construir um controle composto herdadas usando ctlClock como base.
Herdar a partir de um controle composto Nas seções anteriores, você aprendeu como combinar Windows controles, componentes, e código em reutilizáveis controles composto. O controle composto agora pode ser usado como uma base no qual outros controles pode ser construído. O processo de derivar uma classe de uma classe base é chamado Herança. No nesta seção, você criará um controle denominado ctlAlarmClock composto. Será esse controle ser derivadas de seu controle pai, ctlClock. Você aprenderá a estender a funcionalidade de ctlClock, substituindo métodos pai e adicionando novos métodos e propriedades. A primeira etapa para criar um controle herdado é para derivar-lo de seu pai. Esta ação cria um novo controle que possui todas as propriedades, métodos, e gráfica características do controle pai, mas também pode atuar como uma base para a adição de novo ou modificado funcionalidade. Para criar o controle herdado 1.
No Solution Explorer, clique com o botão direito do mouse ctlClockLib, aponte para Add, e clique em User Control A Add New Item caixa de diálogo é aberta.
2.
Selecione o Inherited User Control modelo.
Visual Studio
87
3.
Na caixa Name, digite ctlAlarmClock.cs, e clique em Add. A Inheritance Picker caixa de diálogo será exibida.
4.
Em Component Name, clique duas vezes ctlClock.
5.
No Solution Explorer, pesquise os projetos atual. Observação Um arquivo chamado ctlAlarmClock.cs tiver sido adicionado ao projeto atual.
Adicionando as propriedades alarme Propriedades são adicionadas a um controle herdadas da mesma maneira adicionados a um controle composto. Você agora usará a sintaxe declaração da propriedade para adicionar duas propriedades ao seu controle: AlarmTime, que será armazenar o valor da data e hora o alarme é para ir desativado, e AlarmSet, que indicará se o alarme está definido.. Para adicionar propriedades a seu controle composto 1.
No Solution Explorer, clique com o botão direito do mouse ctlAlarmClock e clique em View Code.
2.
Localize a public class instrução. Observe que o controle herdado ctlClockLib.ctlClock. Sob o Brace abertura digite o seguinte código. ({) instrução, [C#] private DateTime dteAlarmTime; private bool blnAlarmSet; // These properties will be declared as public to allow future // developers to access them. public DateTime AlarmTime { get { return dteAlarmTime; } set { dteAlarmTime = value; } } public bool AlarmSet { get { return blnAlarmSet; } set { blnAlarmSet = value; } }
Adicionando a interface gráfica do controle O controle herdado tem uma interface visual que é idêntica ao controle ela herda da. Ele possui os mesmos controles constituintes como seu controle pai, mas não as propriedades dos controles constituintes estará disponível a menos que eles foram especificamente expostos. Você pode adicionar para a interface gráfica de um controle composto herdadas da mesma maneira ao deseja incluir em qualquer controle composto. Para continuar adicionando ao alarme o relógio na interface visual, você adicionará um controle rótulo que será memória flash quando o alarme é sounding. Para adicionar o controle rótulo 1.
No Solution Explorer, clique com o botão direito do mouse ctlAlarmClock e clique em View Designer. O designer para ctlAlarmClock abre na janela principal.
2.
Clique na parte de exibição do controle, e exibir a janela Propriedades. Observação Enquanto todas as propriedades são exibida, eles são esmaecidos. Isso indica que essas propriedades são nativo para lblDisplay e não pode ser modificado ou acessado na janela Propriedades. Por padrão, controles contido em um controle composto são private, e suas propriedades não estão acessíveis por qualquer meio. Observação Se você quiser que os subseqüentes usuários de seu controle composto para ter acesso a seus controles
Visual Studio
88
interno, declare-los como public ou protected.. ou protected Isso permitirá que você possa definir e modificar propriedades de controles contido em seu controle composto usando o código apropriado. 3. 4.
Adicionar um Label controle para o controle composto. Usando o mouse, arraste o Label controle imediatamente abaixo da caixa Exibir. Na janela Propriedades, defina as propriedades a seguir. Propriedade
Configuração
Name
lblAlarm
Text
Alarme!
TextAlign
MiddleCenter
Visible
false
Adicionar a funcionalidade alarme Nos procedimentos anteriores, você adicionar propriedades e um controle que permitirá funcionalidade alarme no seu controle composto. Neste procedimento, você será adicione código para comparar a hora atual para a hora alarme e, se eles são os mesmos, para memória flash um alarme. Você, substituindo o timer1_Tick método do ctlClock e adicionando código adicional a ela, se estenderá a capacidade de ctlAlarmClock Mantendo todos os inerente a funcionalidade do ctlClock. Para substituir o método timer1_Tick do ctlClock 1.
Em Localizar a private bool blnAlarmSet; Instrução. o Code Editor Imediatamente abaixo dele, adicione a instrução a seguir. [C#] private bool blnColorTicker;
2.
Em (}). localizar o chave de fechamento no final da classe o Code Editor Imediatamente antes do Brace, adicione o seguinte código. [C#] protected override void timer1_Tick(object sender, System.EventArgs e) { // Calls the Timer1_Tick method of ctlClock. base.timer1_Tick(sender, e); // Checks to see if the alarm is set. if (AlarmSet == false) return; else // If the date, hour, and minute of the alarm time are the same as // the current time, flash an alarm. { if (AlarmTime.Date == DateTime.Now.Date && AlarmTime.Hour == DateTime.Now.Hour && AlarmTime.Minute == DateTime.Now.Minute) { // Sets lblAlarmVisible to true, and changes the background color based on // the value of blnColorTicker. The background color of the label // will flash once per tick of the clock. lblAlarm.Visible = true; if (blnColorTicker == false) { lblAlarm.BackColor = Color.Red; blnColorTicker = true; } else { lblAlarm.BackColor = Color.Blue; blnColorTicker = false; } } else { // Once the alarm has sounded for a minute, the label is made // invisible again. lblAlarm.Visible = false; } } }
A adição deste código realiza diversas tarefas. A override instrução devolve o controle para usar esse método em vez do método que foi herdada do controle base. Quando esse método for chamado, ele chama o método substitui invocando a base.timer1_Tick instrução, garantindo que todos os a funcionalidade incorporada ao controle original é reproduzida neste controle. Em seguida, ele executa código adicional para incorporar a funcionalidade alarme. Um controle rótulo flashing será exibido quando o alarme ocorre.
Visual Studio
89
O controle relógio alarme está quase completo. A única coisa que permanece deve implementar uma maneira para desativá-lo. Para fazer isso, você adicionará código para o lblAlarm_Click método. Para implementar o método shutoff 1.
No Solution Explorer, clique com o botão direito do mouse ctlAlarmClock.cs e clique em View Designer. O designer abre.
2.
3.
Adicionar um botão para o controle. Defina as propriedades do botão da seguinte maneira. Propriedade
Value (Valor)
Name
btnAlarmOff
Text
Desativar alarme
No designer, clique duas vezes btnAlarmOff. A Code Editor abre para a private void btnAlarmOff_Click linha.
4.
Modificar esse método para que ele parecido com o código a seguir. [C#] private void btnAlarmOff_Click(object sender, System.EventArgs e) { // Turns off the alarm. AlarmSet = false; // Hides the flashing label. lblAlarm.Visible = false; }
5.
No menu File, clique Save All para salvar o projeto.
Usar o controle Inherited em um formulário Você pode testar o controle herdadas da mesma maneira você testou o controle classe base, ctlClock:. Pressione F5 para criar o projeto e executar o controle no UserControl Test Container Para obter mais informações, consulte HOW TO: testar o comportamento de um UserControl Run-Time. Para colocar o controle a ser usado, será necessário para hospedar-lo em um formulário. Como com um controle composto padrão, um controle composto herdadas não pode autônoma sozinho e deve ser hospedado em um formulário ou outros contêiner. Since ctlAlarmClock tem uma maior intensidade de funcionalidade, código adicional é necessário para testá-lo. Neste procedimento, você irá escrever um programa simples para testar a funcionalidade do ctlAlarmClock. Você irá gravar código para definir e exibir a AlarmTime propriedade de ctlAlarmClock, e será testar suas funções inerente. Para criar e adicionar o controle a um formulário de teste 1.
No Solution Explorer, clique com o botão direito do mouse ctlClockLib e clique em Build.
2.
Adicione um novo Windows Application projeto para a solução, e denomine-Test.
3.
Clique com botão direito no Solution Explorer, mouse no References nó para o projeto de teste. Clique Add Reference para exibir a Add Reference caixa de diálogo. Clique na guia rotuladas Projects. O ctlClockLib projeto será listado em Project Name. Clique duas vezes o projeto para adicionar a referência para o projeto de teste.
Visual Studio
90
4. 5.
No Solution Explorer, clique com o botão direito do mouse Test e clique em Build. Em expanda o ctlClockLib Components Nó. o Toolbox
6.
Clique duas vezes ctlAlarmClock para adicionar uma cópia do ctlAlarmClock ao seu formulário.
7.
Em Localizar e clique duas vezes DateTimePicker Para adicionar um DateTimePicker controle ao seu formulário, e adicione um Label controle clicando duas vezes Label. o Toolbox
8.
Usar o mouse para posicionar os controles em um local conveniente no formulário.
9.
Definir as propriedades desses controles da seguinte maneira. Controle
Propriedade
Value (Valor)
label1
Text
(espaço em branco)
Name
lblTest
Name
dtpTest
Format
Time
dateTimePicker1
10. No designer, clique duas vezes dtpTest. A Code Editor abre para private void dtpTest_ValueChanged. 11. Modificar o código para que ele parecido com o seguinte. [C#] private void dtpTest_ValueChanged(object sender, System.EventArgs e) { ctlAlarmClock1.AlarmTime = dtpTest.Value; ctlAlarmClock1.AlarmSet = true; lblTest.Text = "Alarm Time is " + ctlAlarmClock1.AlarmTime.ToShortTimeString(); }
12. No Solution Explorer, clique com o botão direito do mouse Test e clique em Set as StartUp Project. 13. No menu Debug, clique em Start Debugging. Inicia o programa de Teste. Observe que a hora atual é atualizado no controle ctlAlarmClock, e que o hora de início é mostrado no controle DateTimePicker 14. Clique o DateTimePicker onde os minutos da hora são exibidos. 15. Usando o teclado, definir um valor em minutos que seja maior que a hora atual mostrada por ctlAlarmClock um minuto. O tempo para a Configuração de alarme é mostrado na lblTest. Esperar que o tempo exibido para atingir o tempo configuração alarme. Quando o tempo exibido atingir o tempo ao qual o alarme é definido, o lblAlarm será memória flash. 16. Desativar o alarme clicando btnAlarmOff. Agora você pode redefinir o alarme. Essa explicação passo a passo tem abordadas um número de principais conceitos. Você aprendeu para criar um controle composto pela combinação controles e componentes em um contêiner controle composto. Você aprendeu para adicionar propriedades para o controle, e para escrever código para implementar funcionalidade personalizada. Na última seção, você aprendeu para estender a funcionalidade de um determinado controle composto a
Visual Studio
91
herança, e para alterar a funcionalidade de métodos host por substituir esses métodos.
Um componente Multithreaded Simple com Visual C# Walkthrough: criação O BackgroundWorker Componente substitui e adiciona funcionalidade ao espaço para nome System.Threading; No entanto, espaço para nome System.Threading foi mantida para compatibilidade com versões anteriores e uso futuro, se você escolher. Para obter mais informações, consulte Component BackgroundWorker Overview. Você pode escrever aplicativos que estão capaz de executar várias tarefas simultaneamente. Essa capacidade, chamado multithreading, ou Liberar segmentação é uma maneira eficiente de componentes de design que são muito processor-e exigem entrada do usuário. Um exemplo de um componente que pode alterar usar de multithreading. seria um componente que calcula informações de folha de pagamento O componente pôde processar dados inseridos em um banco de dados por um usuário em um segmento enquanto cálculos folha pagamento muito processor-foram executados em outro. Ao executar esses processos em segmentos separados, os usuários precisam aguardar o computador para concluir cálculos antes de inserir dados adicionais. Nessa explicação passo a passo, você criará um componente multissegmentado simples que executa vários cálculos complexos simultaneamente. Criando o projeto O aplicativo consiste em um único formulário e um componente. O usuário será entrada valores e sinal para o componente para iniciar cálculos. O formulário irá receber valores de seu componente e exibirá-los em controles de rótulo. O componente executará os cálculos muito processor-e sinalizar o formulário quando concluído. Você irá criar variáveis públicas no seu componente para armazenar valores recebidos da interface do usuário. Você também irá implementar métodos no seu componente para executar os cálculos com base nos valores dessas variáveis. Observação Embora geralmente seja uma função de um método preferível que calcule um valor, argumentos não podem ser passados entre segmentos, nem valores podem ser retornados. Existem muitas maneiras simples para fornecer valores para segmentos e para receber valores a partir deles. Nesta demonstração, você irá retornar valores para a interface de usuário, atualizando públicas variáveis, e eventos serão usados para notificar o programa principal quando um segmento de execução foi concluída. As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Para criar o formulário 1. 2.
Criar um novo Windows Application projeto. Nome do aplicativo Calculations e renomeie Form1.cs como frmCalculations.cs. Quando Visual Studio solicita que você para renomear o Form1 elemento de código, clique em Yes. Este formulário servirá como a interface do usuário principal para seu aplicativo.
Visual Studio
92
3. 4.
Adicionar cinco Label controles, quatro Button controles, e um TextBox controle a seu formulário. Definir propriedades para esses controles da seguinte maneira: Controle
Name (Nome)
Texto
label1
lblFactorial1
(vazio)
label2
lblFactorial2
(vazio)
label3
lblAddTwo
(vazio)
label4
lblRunLoops
(vazio)
label5
lblTotalCalculations
(vazio)
button1
btnFactorial1
Fatorial
button2
btnFactorial2
Fatorial - 1
button3
btnAddTwo
Adicionar dois
button4
btnRunLoops
Executar um loop
textBox1
txtValue
(vazio)
Para criar o componente Calculadora 1.
No menu Project, selecione Add Component.
2.
Nome do componente Calculator.
Para adicionar variáveis públicas ao componente Calculadora 1. 2.
Do Code Editor aberto para Calculator. Adicione instruções para criar variáveis públicas que será usado para passar valores frmCalculations para cada segmento. A variável varTotalCalculations manterá uma execução total do número total de cálculos executada pelo componente, e as outras variáveis vai receber valores do formulário. public int varAddTwo; public int varFact1; public int varFact2; public int varLoopValue; public double varTotalCalculations = 0;
Para adicionar métodos e eventos ao componente Calculadora 1.
Declare Os delegados para os eventos que o componente será usado para comunicar valores para o formulário. Observação Embora será você ser declarar quatro eventos, você só precisará criar três representantes porque dois eventos terá a mesma assinatura.
2. 3.
Imediatamente abaixo as declarações de variável inseridas na etapa anterior, a digite o seguinte código: // This delegate will be invoked with two of your events. public delegate void FactorialCompleteHandler(double Factorial, double TotalCalculations); public delegate void AddTwoCompleteHandler(int Result, double TotalCalculations); public delegate void LoopCompleteHandler(double TotalCalculations, int Counter);
Visual Studio
93
4.
Declarar os eventos que o componente será usado para se comunicar com seu aplicativo. Fazer isso, adicionando o seguinte código imediatamente abaixo o código digitado na etapa anterior. public event FactorialCompleteHandler FactorialComplete; public event FactorialCompleteHandler FactorialMinusOneComplete; public event AddTwoCompleteHandler AddTwoComplete; public event LoopCompleteHandler LoopComplete;
5.
Imediatamente abaixo o código que você digitou na etapa anterior, digite o seguinte código: // This method will calculate the value of a number minus 1 factorial // (varFact2-1!). public void FactorialMinusOne() { double varTotalAsOfNow = 0; double varResult = 1; // Performs a factorial calculation on varFact2 - 1. for (int varX = 1; varX <= varFact2 - 1; varX++) { varResult *= varX; // Increments varTotalCalculations and keeps track of the current // total as of this instant. varTotalCalculations += 1; varTotalAsOfNow = varTotalCalculations; } // Signals that the method has completed, and communicates the // result and a value of total calculations performed up to this // point. FactorialMinusOneComplete(varResult, varTotalAsOfNow); } // This method will calculate the value of a number factorial. // (varFact1!) public void Factorial() { double varResult = 1; double varTotalAsOfNow = 0; for (int varX = 1; varX <= varFact1; varX++) { varResult *= varX; varTotalCalculations += 1; varTotalAsOfNow = varTotalCalculations; } FactorialComplete(varResult, varTotalAsOfNow); } // This method will add two to a number (varAddTwo+2). public void AddTwo() { double varTotalAsOfNow = 0; int varResult = varAddTwo + 2; varTotalCalculations += 1; varTotalAsOfNow = varTotalCalculations; AddTwoComplete(varResult, varTotalAsOfNow); } // This method will run a loop with a nested loop varLoopValue times. public void RunALoop() { int varX; double varTotalAsOfNow = 0; for (varX = 1; varX <= varLoopValue; varX++) { // This nested loop is added solely for the purpose of slowing down // the program and creating a processor-intensive application. for (int varY = 1; varY <= 500; varY++) { varTotalCalculations += 1; varTotalAsOfNow = varTotalCalculations; } } LoopComplete(varTotalAsOfNow, varLoopValue); }
Transferindo Entrada de usuário para o componente A próxima etapa é para adicionar código para frmCalculations para receber entrada do usuário e para transferir e receber valores de e para o Calculator Componente. Para implementar front-end funcionalidade para frmCalculations 1. 2.
Aberto frmCalculations no Code Editor. Localize a public partial class frmCalculations instrução. Imediatamente abaixo do { tipo: Calculator Calculator1;
3.
Localize o construtor. Imediatamente antes adicione a seguinte linha: o }, // Creates a new instance of Calculator. Calculator1 = new Calculator();
4.
No designer, clique cada botão para gerar o contorno de código para manipuladores de eventos de cada controle Click e adicione código para criar os manipuladores. Se parecer Quando concluída, seu Click manipuladores de eventos devem com o seguinte:
Visual Studio
94
// Passes the value typed in the txtValue to Calculator.varFact1. private void btnFactorial1_Click(object sender, System.EventArgs e) { Calculator1.varFact1 = int.Parse(txtValue.Text); // Disables the btnFactorial1 until this calculation is complete. btnFactorial1.Enabled = false; Calculator1.Factorial(); } private void btnFactorial2_Click(object sender, System.EventArgs e) { Calculator1.varFact2 = int.Parse(txtValue.Text); btnFactorial2.Enabled = false; Calculator1.FactorialMinusOne(); } private void btnAddTwo_Click(object sender, System.EventArgs e) { Calculator1.varAddTwo = int.Parse(txtValue.Text); btnAddTwo.Enabled = false; Calculator1.AddTwo(); } private void btnRunLoops_Click(object sender, System.EventArgs e) { Calculator1.varLoopValue = int.Parse(txtValue.Text); btnRunLoops.Enabled = false; // Lets the user know that a loop is running lblRunLoops.Text = "Looping"; Calculator1.RunALoop(); }
5.
Após o código adicionado na etapa anterior, digite o seguinte para manipular os eventos receberá do Calculator1 seu formulário: private void FactorialHandler(double Value, double Calculations) // Displays the returned value in the appropriate label. { lblFactorial1.Text = Value.ToString(); // Re-enables the button so it can be used again. btnFactorial1.Enabled = true; // Updates the label that displays the total calculations performed lblTotalCalculations.Text = "TotalCalculations are " + Calculations.ToString(); } private void FactorialMinusHandler(double Value, double Calculations) { lblFactorial2.Text = Value.ToString(); btnFactorial2.Enabled = true; lblTotalCalculations.Text = "TotalCalculations are " + Calculations.ToString(); } private void AddTwoHandler(int Value, double Calculations) { lblAddTwo.Text = Value.ToString(); btnAddTwo.Enabled = true; lblTotalCalculations.Text = "TotalCalculations are " + Calculations.ToString(); } private void LoopDoneHandler(double Calculations, int Count) { btnRunLoops.Enabled = true; lblRunLoops.Text = Count.ToString(); lblTotalCalculations.Text = "TotalCalculations are " + Calculations.ToString(); }
6.
Do } no construtor de frmCalculations, adicione o seguinte código imediatamente antes para manipular os eventos personalizados seu formulário receberá do Calculator1. Calculator1.FactorialComplete += new Calculator.FactorialCompleteHandler(this.FactorialHandler); Calculator1.FactorialMinusOneComplete += new Calculator.FactorialCompleteHandler(this.FactorialMinusHandler); Calculator1.AddTwoComplete += new Calculator.AddTwoCompleteHandler(this.AddTwoHandler); Calculator1.LoopComplete += new Calculator.LoopCompleteHandler(this.LoopDoneHandler);
Teste seus aplicativos Agora você tenha criado um projeto que incorpora um formulário e um componente capaz de realizar vários cálculos complexos. Embora você não tiver implementado capacidade multithreading ainda, você testará o projeto para verificar sua funcionalidade antes de prosseguir. Para testar seu projeto 1.
Partir do Debug menu, escolha Start Debugging. O aplicativo começa e frmCalculations aparece.
2.
Na caixa de texto, tipo 4, clique no botão rotulado Add Two. O número " 6 " deve ser exibido no rótulo abaixo dele, e devem ser exibidos em lblTotalCalculations " cálculos total são 1 ".
Visual Studio
95
3.
Agora clique no botão rotulado Factorial - 1. O número " 6 " deve ser exibido sob o botão, e lblTotalCalculations agora leituras " cálculos total são 4. "
4.
Em alterar o valor na caixa de texto para 20, seguida, clique no botão rotulado Factorial. O número " 2.43290200817664E + 18 " é exibido abaixo dele, e lblTotalCalculations agora lê " cálculos total são 24. "
5.
Altere o valor na caixa de texto para 50000, e, em seguida clique o botão rotulado Run A Loop. Observe que há um intervalo pequeno mas notável antes este botão seja reativada. O rótulo sob este botão deve ler " 50000 " e os cálculos total exibidos são " 25000024 ".
6.
Alterar o valor na caixa de texto para 5000000 e clique no botão rotulado Run A Loop, e clique imediatamente no botão rotulado Add Two. Clique nela novamente. O botão não responder, nem qualquer controle no formulário irá responder até que os loops tenha sido concluídos. Se seu programa é executado somente um único segmento de execução, cálculos muito processor-como o exemplo acima terá a tendência unir o programa Backup até que os cálculos tenha sido concluídos. Na próxima seção, você adicionará capacidade multithreading ao seu aplicativo para que vários segmentos podem ser executados uma vez.
Adicionando recurso Multithreading O exemplo anterior demonstrado as limitações de aplicativos executados somente um único segmento de execução. Na próxima seção você usará a Thread classe para adicionar vários segmentos de execução ao seu componente. Para adicionar a subrotina segmentos 1. 2.
Aberto Calculator.cs no Code Editor. Na parte superior do código, localize a declaração de classe, e imediatamente abaixo, o { tipo o seguinte: // Declares the variables you will use to hold your thread objects. public System.Threading.Thread FactorialThread; public System.Threading.Thread FactorialMinusOneThread; public System.Threading.Thread AddTwoThread; public System.Threading.Thread LoopThread;
3.
Imediatamente antes do fim da declaração de classe na parte inferior do código, adicione o método a seguir: public void ChooseThreads(int threadNumber) { // Determines which thread to start based on the value it receives. switch(threadNumber) { case 1: // Sets the thread using the AddressOf the subroutine where // the thread will start. FactorialThread = new System.Threading.Thread(new System.Threading.ThreadStart(this.Factorial)); // Starts the thread. FactorialThread.Start(); break; case 2: FactorialMinusOneThread = new System.Threading.Thread(new System.Threading.ThreadStart(this.FactorialMinusOne)); FactorialMinusOneThread.Start(); break; case 3: AddTwoThread = new System.Threading.Thread(new System.Threading.ThreadStart(this.AddTwo)); AddTwoThread.Start(); break; case 4: LoopThread = new System.Threading.Thread(new System.Threading.ThreadStart(this.RunALoop)); LoopThread.Start(); break; } }
Visual Studio
96
Quando instanciado, ele requer um argumento na forma de. é um Thread um ThreadStart O ThreadStart é um representante que aponta para o endereço do método onde o segmento é para começar. A ThreadStart não pode receber parâmetros ou valores secreta, e portanto somente pode indicar um void método. O ChooseThreads método você apenas implementado receber um valor a partir do programa chamá lo e usa esse valor para determinar o segmento apropriado para iniciar. Para adicionar o código apropriado a frmCalculations 1.
Abre o frmCalculations.cs arquivo no localize private void btnFactorial1_Click. o Code Editor, 1.
Comentário fora da linha que chama o Calculator1.Factorial1 método diretamente como mostrado: // Calculator1.Factorial()
2.
Adicione a seguinte linha para chamar o Calculator1.ChooseThreads método: // Passes the value 1 to Calculator1, thus directing it to start the // correct thread. Calculator1.ChooseThreads(1);
2.
Fazer modificações semelhantes para os outros button_click métodos. Observação Certifique-se incluir o valor apropriado para o Threads argumento.
3.
Quando você tiver terminado, seu código deverá ter semelhante à seguinte:
private void btnFactorial1_Click(object sender, System.EventArgs e) // Passes the value typed in the txtValue to Calculator.varFact1 { Calculator1.varFact1 = int.Parse(txtValue.Text); // Disables the btnFactorial1 until this calculation is complete btnFactorial1.Enabled = false; // Calculator1.Factorial(); Calculator1.ChooseThreads(1); } private void btnFactorial2_Click(object sender, System.EventArgs e) { Calculator1.varFact2 = int.Parse(txtValue.Text); btnFactorial2.Enabled = false; // Calculator1.FactorialMinusOne(); Calculator1.ChooseThreads(2); } private void btnAddTwo_Click(object sender, System.EventArgs e) { Calculator1.varAddTwo = int.Parse(txtValue.Text); btnAddTwo.Enabled = false; // Calculator1.AddTwo(); Calculator1.ChooseThreads(3); } private void btnRunLoops_Click(object sender, System.EventArgs e) { Calculator1.varLoopValue = int.Parse(txtValue.Text); btnRunLoops.Enabled = false; // Lets the user know that a loop is running lblRunLoops.Text = "Looping"; // Calculator1.RunALoop(); Calculator1.ChooseThreads(4); }
Empacotamento chamadas para controles Agora você irá facilitam atualizando a exibição no formulário. Como controles são sempre pertence ao segmento principal de execução, qualquer chamada para um controle de um segmento subordinada requer uma empacotamento chamada. Empacotamento é o ato de mover uma chamada entre limites do segmento, e é muito dispendioso em termos de recursos. Para minimizar a quantidade de empacotamento que precisa a ocorrer, e certifique-se que as chamadas serão tratadas de forma isenta de segmentos, você usará o System.Windows.Forms.Control.BeginInvoke(System.Delegate) método para chamar métodos no segmento principal de execução, a quantidade de entre segmentos Boundary-empacotamento que deve ocorrer assim Minimizing. Esse tipo
Visual Studio
97
de chamada é necessário ao chamar métodos que manipulam controles. Para obter detalhes, consulte HOW TO: Manipulate controles de segmentos. Para criar os procedimentos invoking controle1.
Abrir o Editor de frmCalculations código. Na seção Declarações, adicione o seguinte código: public delegate void FHandler(double Value, double Calculations); public delegate void A2Handler(int Value, double Calculations); public delegate void LDHandler(double Calculations, int Count);
e InvokeBeginInvoke exigem um representante para o método apropriado como um argumento. Essas linhas declarar o representante assinaturas que serão usadas por BeginInvoke para chamar os métodos apropriados. 2.
Adicionar os seguintes métodos vazios a seu código. public void FactHandler(double Value, double Calculations) { } public void Fact1Handler(double Value, double Calculations) { } public void Add2Handler(int Value, double Calculations) { } public void LDoneHandler(double Calculations, int Count) { }
3.
No menu Edit, uso Cut e Paste Para Recortar todo o código do método FactorialHandler e colá-lo em FactHandler.
4.
Repita a etapa anterior para FactorialMinusHandler e Fact1Handler, AddTwoHandler. e Add2Handler, e LoopDoneHandler e LDoneHandler Quando terminar, não deve haver nenhum código restantes em FactorialHandler, Factorial1Handler, AddTwoHandler, e LoopDoneHandler. e todo o código usado para conter esses devem ter sido movidos para novos métodos apropriados
5.
Chame o BeginInvoke método para chamar os métodos de forma assíncrona. Você pode chamar BeginInvoke de seu formulário (this.) ou qualquer um dos controles no formulário Quando concluída, seu código deverá ter semelhante à seguinte: protected void FactorialHandler(double Value, double Calculations) { // BeginInvoke causes asynchronous execution to begin at the address // specified by the delegate. Simply put, it transfers execution of // this method back to the main thread. Any parameters required by // the method contained at the delegate are wrapped in an object and // passed. this.BeginInvoke(new FHandler(FactHandler), new Object[] {Value, Calculations}); } protected void FactorialMinusHandler(double Value, double Calculations) { this.BeginInvoke(new FHandler(Fact1Handler), new Object [] {Value, Calculations}); } protected void AddTwoHandler(int Value, double Calculations) { this.BeginInvoke(new A2Handler(Add2Handler), new Object[] {Value, Calculations}); } protected void LoopDoneHandler(double Calculations, int Count) { this.BeginInvoke(new LDHandler(LDoneHandler), new Object[] {Calculations, Count}); }
Pode parecer que o manipulador de eventos simplesmente está fazendo uma chamada para o método próxima. O manipulador de eventos realmente está causando um método para ser chamado no segmento principal da operação. Essa abordagem salva em chamadas entre limites do segmento e permite que o aplicativos multisegmentados para executar com eficiência e sem medo de causar lockup. Para obter detalhes sobre como trabalhar com controles em
Visual Studio
98
um ambiente com vários segmentos, consulte HOW TO: Manipulate controles de segmentos. 6.
Salve seu trabalho.
7.
Teste sua solução, escolhendo Start Debugging no menu Debug. 1.
Digite 10000000 na caixa de texto e clique em Run A Loop. " loop " é exibido no rótulo abaixo neste botão. Esse loop deve tomar uma quantidade significativa de tempo para executar. Se conclui muito cedo, ajustar o tamanho do número de acordo.
2.
Na sucessão rápida, clique em Todos os três botões que ainda estão ativados. Você encontrará que todos os botões responder a uma entrada. O rótulo abaixo Add Two deve ser o primeiro para exibir um resultado. Resultados posteriormente serão exibidos nos rótulos abaixo os botões factorial. Esses resultados avaliada como infinito, como o número retornado por uma FATORIAL 10,000,000 é muito grande para uma variável de precisão dupla para conter. Finalmente, após um atraso adicional, resultados são retornados no Run A Loop botão abaixo. Como você apenas observado, quatro conjuntos separados de cálculos foram executados simultaneamente em quatro segmentos separados. A interface do usuário permaneceu responde às solicitações, e eles foram retornados após cada segmento concluído.
Coordenar seus segmentos Um usuário experiente de aplicativos multisegmentados pode Perceive uma falha sutis com o código como digitado. Recuperar as linhas de código de cada método desempenho cálculo-em Calculator: varTotalCalculations += 1; varTotalAsOfNow = varTotalCalculations;
Estas duas linhas de código incrementar a variável varTotalCalculations Pública e defina a variável varTotalAsOfNow local com esse valor. Esse valor é retornado ao frmCalculations e exibido em um controle rótulo. Mas é o valor correto sendo retornado? Se apenas um único segmento de execução estiver sendo executado, a resposta é claramente Sim. Mas se vários segmentos em execução, a resposta será mais certeza. Cada segmento tem a capacidade para incrementar a variável varTotalCalculations. É possível que após um segmento incrementa essa variável, mas antes ele copia o valor a varTotalAsOfNow, outro segmento pode alterar o valor desta variável por incrementando-. Isso leva à possibilidade que cada segmento na verdade, está, relatando resultados imprecisos. do Declaração lock (Referência do C#) fornece Visual C# para permitir sincronização de segmentos para garantir que cada segmento sempre retorna um resultado preciso. A sintaxe para lock é a seguinte: lock(AnObject) { // Insert code that affects the object. // Insert more code that affects the object. // Insert more code that affects the object. // Release the lock. }
Quando o lock Bloco for digitado, execução na expressão especificada será bloqueada até que o segmento especificado tem um bloqueio exclusivo no objeto em questão. No exemplo mostrado acima, a execução está bloqueada no AnObject. Deve lock ser usado com um objeto que retorna uma referência em vez de um valor. A execução pode prossiga como um bloco sem interferência de outros segmentos. Um conjunto de instruções que execute como uma unidade são disse para ser atômicas. Quando encontrado, a expressão é liberada e os segmentos são permitidos para continuar normalmente. é o }
Visual Studio
99
Para adicionar a instrução de bloqueio ao seu aplicativo 1.
Aberto Calculator.cs no Code Editor.
2.
Localizar cada ocorrência do código a seguir: varTotalCalculations += 1; varTotalAsOfNow = varTotalCalculations;
Deve haver quatro instâncias desse código, um em cada método de cálculo. 3.
Modifique este código para que ele lê da seguinte maneira: lock(this) { varTotalCalculations += 1; varTotalAsOfNow = varTotalCalculations; }
4.
Salve seu trabalho e testá-lo como no exemplo anterior. Você pode perceber um pequeno impacto no desempenho do seu programa. Isso ocorre porque a execução de segmentos pára quando um bloqueio exclusivo é obtido no seu componente. Embora ele garante a precisão, essa abordagem impedes alguns dos benefícios de desempenho de vários segmentos. Você deve cuidadosamente considerar a necessidade de segmentos, bloqueio e implementá-las somente quando absolutamente necessário.
Walkthrough: Inheriting a partir de um controle do Windows Forms com Visual C# Com Visual C# 2005, você pode criar poderosos controles personalizados através Herança. A herança é capaz de criar controles que mantenham toda da funcionalidade inerente do Windows Forms controles padrão mas também incorporar funcionalidade personalizada. Nessa explicação passo a passo, você criará um controle herdado simples chamado ValueButton. Esse botão herdarão funcionalidade do controle Windows Forms Button padrão, e será expor uma propriedade personalizada chamada ButtonValue. Observação As caixas de diálogo e comandos de menu que você vê podem ser diferentes das descritas em Help (Ajuda) dependendo das configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings No menu Tools. Para obter mais informações, consulte Configurações do Visual Studio. Criando o projeto Quando você cria um novo projeto, você especificar seu nome, para definir o raiz, nome conjunto, e nome do projeto, e para garantir que o componente padrão será no espaço para nome correto. Para criar a biblioteca controle ValueButtonLib e o controle ValueButton 1.
No menu File, aponte para New e clique Project para abrir a New Project caixa de diálogo.
2.
Selecione o Windows Control Library modelo de projeto a partir da lista de Visual C# projetos e tipo ValueButtonLib na caixa Name. O projeto nome, ValueButtonLib, também é atribuída para a raiz por padrão. A raiz é usado para qualificar os nomes dos componentes no conjunto. Por exemplo, se dois conjuntos de módulos (assemblies) fornecer componentes nomeado ValueButton, você pode especificar seu ValueButton componente usando
Visual Studio
100
ValueButtonLib.ValueButton Para obter mais informações, consulte Namespaces
(Guia de programação C#). 3.
Em Solution Explorer, clique com o botão direito do mouse UserControl1.cs e depois escolha Rename No menu de atalho. Alterar o nome do arquivo para ValueButton.cs. Clique no Yes botão quando lhe for perguntado se você deseja renomear todas as referências para o elemento de código ' UserControl1 '.
4.
No Solution Explorer, clique com o botão direito do mouse ValueButton.cs e selecione View Code.
5.
Localize a class linha public partial class ValueButton Instrução,. e alterar o tipo do qual esse controle herdado UserControl para Button Isso permite que o controle herdadas para herdar todas as funções do controle Button.
6.
No Solution Explorer, abra o ValueButton.cs nó para exibir o arquivo código gerado pelo designer-, ValueButton.Designer.cs. Abrir este arquivo no Code Editor.
7.
Localize o InitializeComponent método e remover a linha que atribui a AutoScaleMode propriedade. Essa propriedade não existe no controle Button.
8.
No menu File, optar Save All por salvar o projeto. Observação Um criador visual está não mais disponível. Porque o Button controle faz sua própria pintura, você não consegue para modificar sua aparência no designer. Sua representação visual será ser exatamente a mesma que a classe ela herda da) (ou seja, Button a menos que modificado no código de. Ainda assim você pode adicionar componentes, que têm nenhum elemento UI, para a superfície de design.
Adicionar uma propriedade ao seu controle Inherited Um uso possíveis de herdadas controles Windows Forms é a criação de controles que são idênticos no aspecto e estilo de padrão controles Windows Forms, mas expõe propriedades personalizadas. No nesta seção, você adicionará uma propriedade chamada ButtonValue para o controle. Para adicionar a propriedade Value 1.
2.
Na Solution Explorer, clique com o botão direito do mouse ValueButton.cs e, em seguida clique na View Code partir do menu de atalho. Localize a class instrução. Imediatamente após o { tipo o código a seguir: [C#] // Creates the private variable that will store the value of your // property. private int varValue; // Declares the property. public int ButtonValue { // Sets the method for retrieving the value of your property. get { return varValue; } // Sets the method for setting the value of your property. set { varValue = value; } }
Este código define os métodos pelo qual a ButtonValue propriedade está armazenados e recuperados. A get instrução define o valor retornado para o valor que é armazenado na variável varValue particular, e a set instrução define o valor da variável particular pelo uso da palavra-chave value. 3.
No menu File, optar Save All por salvar o projeto.
Teste O controle
Visual Studio
101
Controles são projetos não autônoma; eles deve ser hospedado em um contêiner. A fim de testar o controle, você deve fornecer um projeto de teste para que ele seja executado. Você também deve tornar o controle acessíveis para o projeto teste criando (compilação)-lo. No nesta seção, será criar o controle e testá-lo em um formulário do Windows. Para criar o controle No menu Build, clique em Build Solution.
•
A compilação deve ser bem-sucedida sem nenhum erros do compilador ou avisos. Para criar um projeto de teste 1.
No menu File, aponte para Add e clique New Project para abrir a Add New Project caixa de diálogo.
2.
Selecione o Windows nó, sob o Visual C# nó, e clique em Windows Application.
3.
Na caixa Name, digite Test.
4.
No Solution Explorer, clique com o botão direito do mouse no References nó do seu projeto de teste, em seguida, selecione Add Reference a partir do menu de atalho para exibir a Add Reference caixa de diálogo.
5.
Clique na guia rotuladas Projects. O ValueButtonLib projeto será listado em Project Name. Clique duas vezes o projeto para adicionar a referência para o projeto de teste.
6.
Clique com botão direito no Solution Explorer, mouse Test e selecione Build.
Para adicionar o controle ao formulário 1.
No Solution Explorer, clique com o botão direito do mouse Form1.cs e escolha View Designer a partir do menu de atalho.
2.
Na ‘ Toolbox, clique ValueButtonLib Components. Clique duas vezes ValueButton. A ValueButton aparece no formulário.
3.
Clique com o botão direito do mouse e selecione Properties a partir do menu de atalho. o ValueButton
4.
Na janela Properties, examine as propriedades deste controle. Observe que eles são idêntico às propriedades expostos por um botão padrão, exceto que não há uma propriedade adicionais, ButtonValue.
5. 6.
Defina a ButtonValue propriedade como 5. Na guia All Windows Forms da Toolbox, clique duas vezes Label Para adicionar um Label controle ao seu formulário.
7.
Realoque o rótulo para o centralizar do formulário.
8.
Clique duas vezes valueButton1. A Code Editor abre para o valueButton1_Click evento.
9.
Inserir a linha de código a seguir. [C#] label1.Text = valueButton1.ButtonValue.ToString();
Visual Studio
102
10. No Solution Explorer, clique com o botão direito do mouse Test e escolha Set as Startup Project No menu de atalho. 11. No menu Debug, selecione Start Debugging. Aparece Form1. 12. Clique em valueButton1. O número ' 5 ' é exibida no label1, demonstrando que a ButtonValue propriedade do seu controle herdado foi passado para label1 através do valueButton1_Click método. Assim o ValueButton controle herda todas as funções do botão Windows Forms padrão, mas expõe uma propriedade adicionais e personalizados.
Visual Studio
103
Explicações passo-a-passo do Visual Studio Essas orientações introduzir as áreas importantes do produto Visual Studio. Explicação passo a passo cada discute o desenvolvimento de um tipo aplicativo específico ou recurso de aplicativo principal usando uma série de instruções passo a passo. Na maioria dos casos, explicação passo a passo cada incorpora métodos ou recursos de partes diferentes do Visual Studio. Isso fornece uma introdução prática para os vários recursos principais do Visual Studio de uma maneira clara e ordenada.
Walkthroughs de aplicativos cliente Rich O aplicativo rich client típica é um executável autônomo com uma interface gráfica composta de vários controles para o usuário. As orientações seguir descrevem o processo de Criando aplicativo com base em formulários usando vários tipos controle diferente, conexão com um banco de dados existente, e depois exibir os dados no formulário. Observação O objetivo principal dessas orientações é para demonstrar os vários recursos do Visual Studio disponíveis para o desenvolvedor do cliente Rich. Portanto, o aplicativo rich client típico contém um subconjunto dos recursos apresentados. Nesta seção Criando um aplicativo cliente Rich com MFC Demonstra como criar uma interface cliente rico-usando a biblioteca) classe MFC (Microsoft Foundation, uma biblioteca de classes Well-tested que compatível diversos amplo de recursos comuns a todos os aplicativos Windows, e Consumir um serviço XML da Web criado com Visual Basic ou Visual C#. Seções relacionadas Criar um formulário simples do Windows Usando um exemplo simples mas completa, ilustra as etapas fundamentais necessárias para criar Windows Forms no Visual Basic e Visual C#. Demonstrar herança Visual Descreve como criar um formulário Windows base e compilá-lo em uma biblioteca de classes. Você irá importar esta biblioteca de classes para outro projeto, e criar um novo formulário herdeira do formulário básico. Criar um aplicativo distribuídos Explica como criar um aplicativo de várias camadas, distribuídos que tem um cliente Windows Rich e uma interface do navegador. Walkthroughs do Windows Forms Lista orientações adicionais que podem ser executados para familiarizar-se com recursos do Visual Studio.
Visual Studio
104
Walkthrough: Criando um aplicativo cliente Rich com MFC Explicação passo a passo o seguir descreve um procedimento para criar um aplicativo rich client MFC-Based e vários outros recursos do Visual Studio .NET. Durante o curso desta explicação passo a passo, você irá realizar as atividades a seguir: •
Criar uma solução-com base MFC que exibe dados de um banco de dados existente e exibe os seguintes recursos usando várias caixas de diálogo:
o
Hospedando um controle ActiveX sem janelas
o
Usando dinâmico caixas de diálogo HTML (DHTML) Validando o usuário do aplicativo usando um serviço XML da Web
o
existente. Para concluir o explicação passo a passo, deve fornecer um banco de dados existente e pelo menos uma tabela pesquisável. Observação Essa explicação passo a passo usa o pubs banco de dados e authors tabela como um banco de dados exemplo e tabela. Criar o aplicativo cliente Rich MFC Para criar o aplicativo MFC 1.
No menu File, clique em New, e clique em Project A New Project caixa de diálogo será exibida.
2.
No painel tipos Project, clique em Visual C++ Projects, e em Painel Modelos, clique no MFC Application ícone.
3.
Na caixa Name, digite MyProject.
4.
Clique OK para fechar a caixa de diálogo e abrir o MFC Application Wizard.
Usando o MFC Application Wizard, você modificará seu projeto para oferecer suporte o acesso a bancos de dados e exibir recursos do aplicativo rich client. Observação Essa explicação passo a passo presume que o servidor está sendo acessado é um servidor SQL e o pubs banco de dados que existe no servidor. Para implementar suporte a banco de dados 1.
No MFC Application Wizard, selecione Database Support.
2.
Selecione a Database View with File Support opção.
3.
Clique no Data Source botão.
4.
Na caixa OLE DB Provider(s) de listagem, clique no Microsoft OLE DB Provider for SQL Server item e clique em Next.
5.
Digite ou selecione um nome de servidor existente.
6.
Selecione Use Windows NT Integrated Security.
Visual Studio
105
7.
Selecione o pubs banco de dados.
8.
Clique no OK botão para estabelecer a conexão.
9.
Na caixa Select Database Object de diálogo, selecione a authors tabela.
10. Selecione OK para fechar a caixa de diálogo. 11. Clique Finish para criar o aplicativo estrutura. 12. Após a criação do projeto, será necessário remover a #error linha de MyProjectSet.h. Depois que o aplicativo estrutura for criado, principais recursos podem ser adicionados. Acessar e exibir dados de um banco de dados existente Nesta seção, você usará um formulário simples e controle para demonstrar o acesso e exibição dos dados da tabela authors. Porque este é apenas uma demonstração, consulta e exibição são simples. Os resultados da consulta (todos os autores na tabela) são exibidos em uma caixa de listagem. O MyProject aplicativo já contém um objeto de formulário (chamado IDD_MYPROJECT_FORM) localizado sob o nó diálogo no modo de exibição de recurso,. Você irá modificar este formulário para exibir uma lista simples de autores da tabela authors. Para modificar o formulário 1. 2. 3.
No modo de exibição de recursos, expanda o Projeto, expanda o Dialog nó, e clique duas vezes no objeto de formulário padrão). (IDD_MYPROJECT_FORM Arraste um List Box controle para o formulário padrão. Clique com o botão direito do mouse no List Box controle e, no menu de atalho, clique em Add Variable. O Add Member Variable Wizard aparece.
4.
Na caixa Variable name, digite m_DataList e clique em Finish.
5.
Arraste um Button controle para o formulário padrão. Na janela Propriedades, alterar a Caption caixa para Control Host.
6.
Arraste um Button controle para o formulário padrão. Na janela Propriedades, alterar a Caption caixa para DHTML Dialog. Observação Esses dois controles serão usados posteriormente no explicação passo a passo o para acessar outros recursos do aplicativo.
Para exibir os resultados da consulta 1.
No modo classe, expanda o nó de projeto e clique duas vezes no OnInitialUpdate método da classe CMyProjectView.
2.
Adicione o seguinte código após qualquer código existente na função: HRESULT hr = S_OK; TCHAR szAuthor[80]; CMyProjectSet &dbset = GetDocument()>m_MyProjectSet; [db_command(name="cmd", source_name="dbset", hresult=hr) { SELECT au_lname ([bindto]szAuthor) FROM AUTHORS }]; while(cmd.MoveNext() == S_OK) m_DataList.InsertString(-1, szAuthor);
Visual Studio
106
Esse código usa o db_command atributo ao inicializar o conjunto de dados de objeto do documento (m_MyProjectSet.) com os nomes de todos os autores atuais na tabela última 3.
No menu Build, clique em Build Solution.
4.
No menu Debug, clique em Start Without Debugging. Os resultados da consulta serão exibidos na caixa de listagem do formulário modo filho.
Criando e hospedando um controle ActiveX sem janelas A modificação próxima para o aplicativo rich client é uma caixa de diálogo que hospeda um controle personalizado simples sem janelas. A primeira etapa é para criar um controle ActiveX personalizado com um evento simples. Em seguida um objeto Caixa de diálogo é criado que contém o controle e manipular o evento de controle. Para criar o controle personalizado 1. 2.
No Explorer Solution, clique com o botão direito do mouse a MyProject Solução. No menu de atalho, clique em Add, e clique em New Project A New Project caixa de diálogo será exibida.
3. 4.
No painel tipos Project, selecione Visual C++ Projects, e no painel Modelos, clique no ATL Project ícone Digite CustomCtl para o nome do novo projeto e clique em OK. O ATL Project Wizard aparece.
5.
Clique Finish para aceitar as configurações padrão e criar o projeto.
6.
Clique com o CustomCtl projeto.
7.
No menu de atalho, clique em Add, e clique em Add Class A Add Class caixa de diálogo será exibida.
8.
Clique duas vezes no ATL Control item. O ATL Control Wizard aparece.
9.
Na ATL Control Wizard, insira MyCtl na caixa Short name.
10. Na página Options, escolha Connection points. 11. Clique Finish para criar o objeto controle personalizado. Depois que o controle for criado, você adicionará um evento simples chamado Click. Este evento é acionado pelo controle sempre que o mouse é clicado na área de controle. Para criar o evento Click 1. 2.
No modo de classe, expanda o CustomCtl nó. Clique com o botão direito do mouse o interface de eventos para o controle personalizado (_IMyCtlEvents).
3.
No menu de atalho, clique em Add, e clique em Add Method
4.
Insira os seguintes valores usando o Adicionar Assistente método:
o
Return typevoid
Visual Studio
107
o
Method nameClick
5.
Clique Finish para criar o Click evento.
6.
No modo de classe, selecione a classe de controle (CMyCtl).
7.
Na janela Propriedades, clique no Messages botão e adicionar um OnLButtonDown manipulador para a WM_LBUTTONDOWN mensagem.
8.
Adicione o seguinte código para o corpo do manipulador: Click(); return 0;
9.
No menu Build, clique em Build Solution.
Depois que a solução cria com êxito, uma caixa de diálogo simples pode hospedar o controle. Para hospedar o controle 1.
No modo de exibição do recurso, clique com o botão direito do mouse a MyProject Solução.
2.
No menu de atalho, clique em Add, e clique em Add Resource
3.
Clique no Dialog item e clique em New.
4.
Clique com botão direito mouse na IDD_DIALOG1 caixa de diálogo e clique Add Class no menu de atalho. O assistente classe MFC aparece.
5.
No Assistente para classe MFC, insira os seguintes valores:
o
Class nameCMyCtlDlg
o
Base classCDialog
6.
Clique em Finish.
7.
Clique com o botão direito do mouse na IDD_DIALOG1 caixa de diálogo e selecione Insert ActiveX Control no menu de atalho.
8.
Na caixa de diálogo, selecione CMyCtl Object e Insert ActiveX Control clique OK para adicionar o controle.
9.
Selecione o controle ActiveX em um modelo de diálogo.
10. Na janela Propriedades, clique o Control Events botão e adicione um ClickMyctl1 manipulador para o Click evento. 11. Adicione o seguinte código para o corpo do manipulador de eventos: AfxMessageBox("Click event fired");
A etapa final envolve conectando a caixa de diálogo para o aplicativo rich client. Isso é feito com código no manipulador para o botão Controlar host você criou anteriormente, no tópico Accessing and Displaying Data from an Existing Database. Para exibir a caixa de diálogo de controle host 1.
Do IDD_MYPROJECT_FORM no modo de exibição de recursos, exibir o formulário principal clicando duas vezes (localizada sob o Dialog nó do arquivo de recurso para a MyProject Solução).
2.
Clique duas vezes no Control Host botão, adicionada anteriormente.
3.
Adicione o seguinte código para a função do manipulador:
Visual Studio
108
CMyCtlDlg dlg; dlg.DoModal( );
4.
Adicione o código a seguir após a última #include Instrução no arquivo de origem atual: #include "MyCtlDlg.h"
Isso inclui o arquivo.h da classe implementar a caixa de diálogo Controle host. 5.
No menu Build, clique em Build Solution.
6.
No menu Debug, clique em Start Without Debugging.
Você pode chamar a caixa de diálogo host controle pressionando o Control Host botão. Acionam o evento personalizado Click clicando no botão esquerdo do mouse dentro do controle. Implementar uma caixa de diálogo DHTML Outro recurso dos aplicativos cliente Rich é o uso de caixas de diálogo que utilizam HTML para a interface do usuário em vez de recursos diálogo tradicional. Para fins dessa explicação passo a passo, uma caixa de diálogo DHTML simples será implementada, contendo um controle de imagem que exibe um bitmap simples. Para implementar a caixa diálogo DHTML 1.
Clique no modo de exibição de recursos, com o MyProject projeto.
2.
No menu de atalho, clique em Add, e clique em Add Resource
3.
Clique no Dialog item e clique New para criar uma nova caixa de diálogo.
4.
Remover esses são implementados em HTML nas etapas subseqüentes. e Cancel Botões do modelo de diálogo; o OK
5.
Clique com o botão direito do mouse o IDD_DIALOG2 formulário Caixa de diálogo e selecione Add Class
6.
Insira os seguintes valores:
o
Class nameCMyDhtmlDlg
o
Base classCDHtmlDialog
7. 8.
Clique em Finish. No modo de exibição de recursos, sob o nó HTML, clique duas vezes no IDR_HTML_MYDHTMLDLG item e clique na guia HTML no painel do projeto para
editar o arquivo HTML associado. 9.
Substituir o texto existente (que deve ser semelhante TODO: Place controls here). com This is the text content of my DHTML dialog box
Como com o diálogo Host de controle implementado anteriormente, esta caixa de diálogo será exibida quando o usuário pressiona um botão (DHTML Dialog.) no formulário principal do aplicativo Para exibir a caixa de diálogo DHTML 1.
Do IDD_MYPROJECT_FORM no modo de exibição de recursos, exibir o formulário principal clicando duas vezes (localizada sob o nó de diálogo do arquivo de recurso para a MyProject Solução).
2.
Clique duas vezes no DHTML Dialog botão, adicionada anteriormente.
3.
Adicione o seguinte código para a função do manipulador:
Visual Studio
109
CMyDhtmlDlg dlg; dlg.DoModal( );
4.
Adicione o código a seguir após a última #include Instrução no arquivo de origem atual: #include "MyDhtmlDlg.h"
Isso inclui o arquivo.h da classe implementação caixa de diálogo DHTML. 5.
No menu Build, clique em Build Solution.
6.
No menu Debug, clique em Start Without Debugging.
Quando for exibida, caixa de diálogo Abrir a caixa de diálogo DHTML pressionando o DHTML Dialog botão. Para obter mais informações sobre caixas de diálogo DHTML e um exemplo mais completo, consulte a CDHtmlDialog classe e a DHtmlExplore amostra. Criando e Consuming um serviço da Web XML existente Ocasionalmente, um aplicativo rich client interage com um serviço XML da Web externo, fornecendo um Rich front-end para um banco de dados existente ou bancos de dados. O usuário é então possam interagir com os dados de uma maneira familiarizado ou gráfica. Nesta etapa, você irá criar um serviço da Web XML simples projetado para ser executado em um servidor Web usando o Microsoft Internet Information Services (IIS). Para criar o serviço da Web XML 1.
No menu File, clique em New, e clique em Project A New Project caixa de diálogo será exibida.
2.
No painel tipos Project, clique em uma Visual Basic Projects ou Visual C# Projects,. e no painel Modelos, clique no ASP.NET Web Service ícone
3.
Na caixa Location, digite http://localhost/MyService.
4.
Clique OK para fechar a caixa de diálogo e criar a solução.
Uma parte da serviços XML da Web comum consiste em verificar cada usuário do aplicativo. Após criar a solução, você pode implementar um método simples de validação. Essa rotina de validação é deliberadamente simples para ilustrar o conceito claramente. Depois que a solução foi criada, adicionar um método de validação ao Service1.asmx arquivo de origem. Para fazer isso, clique com o botão direito do mouse a Service1.asmx.cs superfície de design e selecione View Code Substituir o HelloWorld método da Web no final do arquivo com o código a seguir: ' Visual Basic Function Validate(ByVal s1 As String, ByVal s2 As String) As Boolean Return s1 = s2 End Function // C# [WebMethod] public bool Validate(string s1, string s2) { return s1 == s2; }
Depois você modificou o arquivo de origem, Criar a solução. Depois que o serviço da Web XML existir, você pode adicionar e configurar uma referência da Web com caixa Add Web Reference de diálogo. Para adicionar uma referência da Web para o aplicativo do cliente 1.
Abra a MyProject Solução.
Visual Studio
110
2.
No Solution Explorer, clique com o MyProject projeto e selecione Add Web Reference. A Add Web Reference caixa de diálogo será exibida.
3.
Em Browse to, selecione Web services on the local machine. A máquina local será exibido; selecione aquele que você acabou de criar uma lista de serviços XML da Web existente no (Service1). Se o serviço da Web for encontrado, um descrição do serviço será exibida no painel esquerdo e botão Add Reference será ativado. O URL do arquivo.asmx para o serviço da Web também deve aparecer na caixa URL da; ele deve aspecto como este: http://localhost/MyService/Service1.asmx
4.
Clique no Add Reference botão.
Assim que a referência da Web for adicionada, você adicionará uma caixa de diálogo de validação para demonstrar a interação entre o aplicativo e o serviço da Web XML. Para adicionar uma caixa de diálogo de validação 1.
Clique no modo de exibição de recursos, com o MyProject projeto.
2.
No menu de atalho, clique em Add, e clique em Add Resource
3.
Clique duas vezes no Dialog item.
4.
Clique duas vezes no IDD_DIALOG3 formulário Caixa de diálogo. O assistente classe MFC aparece.
5.
Insira os seguintes valores:
o
Class nameCMyValidateDlg
o
Base classCDialog
6.
Clique em Finish.
Agora que a caixa diálogo foi criada, adicionar controles para fornecer um serviço de validação para o usuário. Para validar o usuário 1.
Arraste dois Edit control controles para o IDD_DIALOG3 formulário Caixa de diálogo.
2.
Clique com o botão direito do mouse na primeira Edit control.
3.
No menu de atalho, selecione Add Variable.
4.
Na caixa Variable Name, digite m_Name.
5.
No menu Category drop-down, selecione Value.
6.
Clique em Finish.
7.
Clique com o botão direito do mouse no segundo Edit control Controle.
8.
Adicionar outra variável (chamada m_Password de categoria Value).
9.
Clique duas vezes no OK botão no formulário Caixa de diálogo.
10. Adicione o seguinte código para a função do manipulador: Service1::CService1 *s = new Service1::CService1(); UpdateData(TRUE); bool result = false; s>Validate(CComBSTR(m_Name), CComBSTR(m_Password), &result); if (result) CDialog::OnOK();
Visual Studio
111
11. Adicione o código a seguir após a última #include Instrução no arquivo de origem atual: #include "WebService.h"
Isso inclui o arquivo.h do serviço da Web usado por caixa de diálogo de validação. Para a rotina de validação para ser eficiente, caixa de diálogo de validação deve ser o primeiro objeto Interface de usuário seja exibido. Se o usuário inserir o nome correto e a senha a aplicativo rich client serão exibidos. Será se um nome incorreto ou senha for inserida, o usuário atual ser impedido de acessar o aplicativo rich client. Para implementar esse comportamento, modifique a InitInstance função da classe do aplicativo principal para chamar esta caixa de diálogo primeiro. O aplicativo continua somente quando a caixa diálogo corretamente sai. Para exibir a caixa de diálogo de validação inicialmente 1.
No modo de classe, expanda o CMyProjectApp nó.
2.
Clique duas vezes a InitInstance função para editar o corpo função.
3.
Adicione o seguinte código antes que a chamada para a ShowWindow função do objeto pMainFrame: // Display the validation dialog box first CMyValidateDlg dlg; if (dlg.DoModal() != IDOK) return FALSE;
4.
Adicione o código a seguir após a última #include Instrução no arquivo de origem atual: #include "MyValidateDlg.h"
Isso inclui o arquivo.h da caixa de diálogo de validação. 5. 6.
Compilar uma solução. No menu Build, clique em Build Solution. No menu Debug, clique em Start Without Debugging. Na caixa de diálogo de verificação, inserir o mesmo texto nas caixas de edição Nome e senha, e clique em OK. O aplicativo rich client será executada, exibindo sua caixa de diálogo principal.
Criar um projeto de instalação A etapa final ao desenvolver seu aplicativo Visual C++ está criando um projeto de instalação. Para criar um projeto de instalação 1. 2.
No Explorer Solution, clique com o botão direito do mouse a MyProject Solução. No menu de atalho, clique em Add, e clique em New Project A New Project caixa de diálogo será exibida.
3. 4.
No painel tipos Project, selecione Setup and Deployment Projects, e no painel Modelos, clique no Setup Wizard ícone Digite MySetup o nome do projeto de instalação para e clique em OK. O Assistente para Instalação será exibido.
5.
Clique em Next duas vezes.
Visual Studio
112
6.
Selecione os seguintes grupos de saída:
o
Saída de MyProject principal
o
Saída de CustomCtl principal
7.
Clique em Next duas vezes.
8.
Clique em Finish
9.
No menu Build, clique em Build MySetup.
O arquivo resultante (MySetup) pode ser copiado para uma máquina de destino para instalação do aplicativo rich client. Para obter mais informações sobre projetos de implantação e o Assistente para instalação, consulte Implantar aplicativos, Projetos de implantação. e Walkthroughs de implantação
Visual Studio
113
Walkthroughs Application de formulários da Web O objetivo dessas orientações é para mostrar como criar um site da Web usando páginas da Web e controles ASP.NET. A tabela a seguir lista uma seleção de orientações que fornecerá uma visão geral dos recursos ASP.NET. Por trabalhar com essas orientações, você aprenderá sobre a criação de sites, criar e editar páginas da Web, conectando a fontes de dados, criando um objeto comercial da camada intermediária, e usar outros recursos ASP.NET para personalizar os sites e páginas. Walkthrough
Descrição
Passo-a-passo: Criando uma página da Web básica no Visual Web Developer
Uma introdução ao criar páginas da Web ASP.NET no Visual Studio.
Passo-a-passo: Acesso a dados básico em páginas da Web
Uma introdução ao exibir dados em uma página da Web usando os controles da fonte de dados e o GridView controle.
Passo a passo: Ligação de dados em um objeto corporativo personalizado
Uma introdução ao criar um componente de camada intermediária que torna dados disponível para páginas da Web.
Passo-a-passo: Depuração de Páginas da Web no Visual Web Developer
Uma introdução ao usar o depurador Visual Studio com páginas da Web.
Passo-a-passo: Criando e Usando Páginas Mestras do ASP.NET no Visual Web Developer
Uma introdução ao usar páginas mestras ASP.NET para definir um layout geral para páginas da Web.
Passo-a-passo: Personalizando um site usando temas no Visual Studio
Uma introdução ao definir um aparência consistente para suas páginas da Web.
Passo-a-passo: Criando uma página do Web Parts no Visual Web Developer
Uma introdução ao criar uma página da Web que usa Partes da Web para permitir que o usuário para personalizar o conteúdo e layout de uma página.
Passo a passo: Criando um site com associação e logon de usuário (Visual Studio)
Uma introdução a adicionar segurança logon em um site da Web.
Passo a passo: Criando e usando um serviço da Web do ASP.NET no Visual Web Developer
Uma introdução ao criar um serviço da Web ASP.NET e consumindo-lo de uma página da Web.
Visual Studio
114
Explicação Passo a Passo: Criando uma Página Web Básica no Visual Web Developer Esta explicação passo a passo fornece uma introdução ao Microsoft Visual Web Developer. Ela orienta você através da criação de uma página simples usando o Visual Web Developer, ilustrando as técnicas básicas de criação de uma nova página, adicionando controles e escrevendo código. As tarefas ilustradas nesta explicação passo a passo incluem: •
Criar um site Web do sistema de arquivos.
•
Familiarizando-se com o Visual Web Developer.
•
Criando uma página ASP.NET Single-File no Visual Web Developer.
•
Adicionar controles.
•
Adicionar manipuladores de eventos.
•
Executar páginas com o Servidores Web em Visual Web Developer. Pré-requisitos
Para concluir esta explicação passo a passo, será necessário: •
Visual Web Developer
•
O .NET Framework Criando um Site e Página Web
Nesta parte da explicação passo a passo, você criará um site Web e adicionará uma nova página a ele. Você também adicionará um texto HTML e executará a página no seu navegador Web. Para esta explicação passo a passo, você criará um site Web do sistema de arquivos que não requer que você trabalhe com o Internet Information Services (IIS) da Microsoft. Em vez disso, você criará e executará sua página no sistema de arquivos local. Um sistema de arquivos do site Web é um sistema que armazena páginas e outros arquivos em uma pasta que você escolhe em algum lugar em seu computador local. Outras opções de site Web incluem um site Web do IIS local, que armazena seus arquivos em uma subpasta da raiz do IIS local (normalmente, \Inetpub\Wwwroot\). Um site FTP armazena arquivos em um servidor remoto que você acessa através da Internet, usando o File Transfer Protocol (FTP). Um site remoto armazena arquivos em um servidor remoto que você pode acessar através de uma rede local. Para mais informações, consulte Explicação Passo a Passo: Editando Sites Web com FTP no Visual Web Developer. Além disso, os arquivos do site Web podem ser armazenados em um sistema de controle de origem como o Visual SourceSafe. Para mais informações, consulte Introdução ao Controle de Origem. Para criar um site Web do sistema de arquivos 1.
Abra o Visual Web Developer.
2.
No menu File, aponte para New, e em seguida, clique em Web site A caixa de diálogo New Web Site aparece como mostrado na screen shot a seguir.
Visual Studio
115
Caixa de diálogo New Web Site
3.
No Visual Studio installed templates, clique em ASP.NET Web Site. Quando você cria um site Web, você especifica um modelo. Cada modelo cria um aplicativo Web que contém arquivos e pastas diferentes. Nesta explicação passo a passo, você está criando um site Web baseado no modelo ASP.NET Web Site, que cria algumas pastas e alguns arquivos padrão.
4.
Na caixa Location, selecione a caixa File System e seguida, digite o nome da pasta onde você deseja manter as páginas do seu site Web. Por exemplo, digite o nome da pasta C:\BasicWebSite.
5.
Na lista Language, clique em Visual Basic ou Visual C#. A linguagem de programação que você escolher será o padrão para seu site Web. Entretanto, você pode usar vários idiomas no mesmo aplicativo Web, criando páginas e componentes em linguagens de programação diferentes
6.
Clique em OK. O Visual Web Developer cria a pasta e uma nova página chamada Default.aspx. Quando uma nova página é criada, por padrão, o Visual Web Developer exibe a página no modo Source, onde você pode ver os elementos HTML da página. O screen shot a seguir mostra o modo Source de uma página Web padrão. Modo Source de uma página padrão
Um Tour do Visual Web Developer Antes de você prosseguir trabalhando na página, é útil você se familiarizar com o ambiente de desenvolvimento do Visual Web Developer. A ilustração a seguir mostra as janelas e ferramentas que estão disponíveis no Visual Web Developer. Diagrama do ambiente Visual Web Developer
Para se familiarizar com o designer da Web em Visual Web Developer •
Examinar a ilustração anterior e corresponder o texto para a lista a seguir, que descreve as janelas e ferramentas mais comumente usadas. (Nem todas as janelas e ferramentas que você vê são listadas aqui, somente as marcadas na ilustração anterior.)
o
Barras de ferramentas. Fornecem comandos de formatação de texto, localização de texto, e assim por diante. Algumas barras de ferramentas ficão disponíveis somente quando você está trabalhando em modo Design.
o
Solution Explorer. Exibe os arquivos e pastas em seu site Web.
o
Janela de Documento. Exibem os documentos com os quais você está trabalhando em janelas com guias. Você pode alternar entre documentos clicando nas guias.
o
Janela de Propriedades. Permite que você altere as configurações da página, dos elementos HTML, dos controles e de outros objetos.
Visual Studio
116
o
Guias de Exibição. Mostra diferentes modos de exibição do mesmo documento. Modo Design é uma superfície de edição próxima ao WYSIWYG. Modo Source é o editor HTML para a página. Você trabalhará com esses modos posteriormente nesta explicação passo a passo. Se você preferir abrir as páginas Web em modo Design, no menu Tools, clique em Options, selecione o nó HTML Designer e altere a opção Start Pages In.
o
Caixa de Ferramentas. Fornece controles e elementos HTML que você pode arrastar para a sua página. Os elementos da caixa de ferramentas são agrupados por função em comum.
o
Server Explorer/Database Explorer. Exibe conexões de banco de dados. Se o Server Explorer não estiver visível no Visual Web Developer, no menu View, clique em Other Windows, e clique em Server Explorer. Observação Você pode reorganizar e redimensionar as janelas para atender suas preferências. O menu View permite exibir janelas adicionais.
Criando uma Nova Página Web Forms Quando você cria um novo site Web, o Visual Web Developer adiciona uma página do ASP.NET (página Web Forms) chamada Default.aspx. Você pode usar a página Default.aspx como a home page para o seu site Web. Entretanto, para esta explicação passo a passo, você irá criar e trabalhar com uma nova página. Para adicionar uma página ao site Web 1.
Feche a página Default.aspx. Para fazer isso, clique com o botão direito do mouse na guia que contém o nome de arquivo e selecione Close.
2.
Na Solution Explorer, clique com o botão direito do mouse o site Web (por exemplo, C:\BasicWebSite), e clique em Add New Item.
3.
No Visual Studio installed templates, clique em Web Form.
4.
Na caixa Name, digite FirstWebPage.
5.
Na lista Language, escolha a linguagem de programação que você prefere usar (Visual Basic, C#, ou J#). Quando você cria o site Web, você especifica uma linguagem padrão. Entretanto, sempre que você cria um nova página ou um componente para o seu site Web, você pode alterar a linguagem. Você pode usar linguagens de programação diferentes no mesmo site Web.
6.
Desmarque a caixa de seleção Place code in separate file. A screen shot a seguir mostra a caixa de diálogo Add New Item. Caixa de Diálogo Add New Item
Nesta explicação passo a passo, você está criando uma página single-file com o código e HTML na mesma página. O código para páginas do ASP.NET pode ser localizado na página ou em um arquivo de classe separado. Para saber mais sobre como manter o código em um arquivo separado, consulte Explicação Passo a Passo: Criando uma Página Web Básica com Separação de Código no Visual Web Developer.
Visual Studio
117
7.
Clique em Add. O Visual Web Developer cria a nova página e a abre no modo Source.
Adicionando HTML à página Nesta parte da explicação passo a passo, você irá adicionar algum texto estático para a página. Para adicionar texto para a página 1.
Na parte inferior da janela de documento, clique na guia Design para alternar para o modo Design. O modo Design exibe a página com a qual você está trabalhando de uma maneira WYSIWYG. Nesse ponto, você não tem qualquer texto ou controles na página; então, a página está em branco.
2.
Na página, digite Bem-vindo ao Visual Web Developer. A screen shot a seguir mostra o texto que você digitou no modo Design. O texto de boas vindas como visto no modo Design
3.
Alterne para modo Source. Você pode ver o HTML que você criou, digitando no modo Design, como mostrado na seguinte screen shot. O texto de boas vindas como visto no modo Source
Executando a Página Antes de prosseguir com a adição de controles para a página, você pode tentar executá-la. Para executar uma página, é necessário um servidor Web. Em um site Web de produção, você usa o IIS como seu servidor Web. Entretanto, para testar uma página, você pode usar o Servidor de Desenvolvimento do ASP.NET, que é executado localmente e não requer o IIS. Para os sites Web do sistema de arquivos, o servidor Web padrão no Visual Web Developer é o Servidor de Desenvolvimento do ASP.NET. Para executar a página 1.
Pressione CTRL+F5 para executar a página. O Visual Web Developer inicia o Servidor de Desenvolvimento do ASP.NET. Um ícone aparece na barra de ferramentas para indicar que o servidor Web Visual Web Developer está sendo executado, como mostrado na seguinte screen shot. Ícone do Servidor Visual Web Developer
A página é exibida no navegador. Embora a página que você criou tenha uma extensão .aspx, ela atualmente executa como qualquer página HTML. Observação
Visual Studio
118
Se o navegador exibe um erro 502 ou um erro indicando que a página não pode ser exibida, você deve configurar seu navegador para ignorar os servidores proxy para solicitações locais. Para obter detalhes, consulte COMO: Ignorar um Servidor proxy para Solicitações Web Locais. 2.
Feche o navegador.
Adicionando e Programação Controles Nesta parte da explicação, você irá adicionar os controles Button, TextBox e Label para a página e gravar o código para manipular o evento Click para o controle Button. Agora você irá adicionar os controles do servidor na página. Os controles do servidor, que incluem botões, rótulos, caixas de texto e outros controles familiares, fornecem capacidades típicas para processamento de formulários para suas páginas Web do ASP.NET. Entretanto, você pode programar os controles com código que é executado no servidor, não no cliente. Para adicionar controles para a página 1.
Clique na guia Design para alternar para modo Design.
2.
Pressione SHIFT+ENTER algumas vezes para criar um pouco de espaço.
3.
No TextBox, a partir do grupo Standard, arraste três controles para a página: um controle Label, um controle Toolbox e um controle Label.
4.
Coloque o ponto de inserção acima do controle TextBox e em seguida, digite Entre com o seu nome:. Esse texto HTML estático é a legenda do controle TextBox. Você pode misturar HTML estático e controles de servidor na mesma página. O screen shot a seguir mostra como os três controles aparecem no modo Design. Controles no Modo de Exibição Design
Definindo as Propriedades do Controle O Visual Web Developer oferece várias maneiras para definir as propriedades dos controles na página. Nesta parte da explicação passo a passo, você irá definir as propriedades em modo Design e em modo Source. Para definir as propriedades de controle 1.
Selecione o controle Button e na janela Properties, defina Text para Display Name, conforme mostrado na screen shot a seguir. Texto do Controle Button Alterado
2.
Alterne para modo Source. O modo de exibição Source exibe o HTML para a página, incluindo os elementos que o Visual Web Developer criou para os controles do servidor. Os controles são declarados usando sintaxe do tipo HTML, exceto as marcas que usam o prefixo asp: e incluem o atributo runat="server". As propriedades do controle são declaradas como atributos. Por exemplo, quando você define a propriedade Text para o controle Button, na etapa 1, você realmente definiu o atributo Text na marcação do controle.
Visual Studio
119
Observe que todos os controles estão dentro de um elemento