Padrões de composição para Visual Studio

Padrões compostos combinam elementos de interação e design em configurações distintas. Alguns dos padrões compostos mais importantes no Visual Studio em relação à consistência incluem:

Visualização de dados

Os gráficos são uma forma visual de agregar e visualizar dados para melhorar a tomada de decisões. Eles podem ajudar os usuários a se depararem com muitos dados, mas pouco significado, a ver o que merece atenção e o que pode precisar de uma ação.

O usuário se beneficiará de um gráfico se qualquer uma das seguintes condições for verdadeira:

  • O gráfico ajudará os usuários a identificar as tarefas nas quais podem atuar?

  • O gráfico permitirá que os usuários prevejam as consequências de possíveis mudanças?

  • O gráfico ajudará os usuários a descobrir tendências e identificar padrões?

  • O gráfico permitirá que os usuários tomem melhores decisões?

  • O gráfico ajudará a responder a uma pergunta específica que os usuários podem ter no contexto dado?

Regras gerais para gráficos

  • Rotule claramente os dados. Ilustrações sem explicação são apenas imagens bonitas.

  • Inicie os eixos no zero para evitar proporções distorcidas. O comprimento da linha e o tamanho da barra são dicas visuais importantes para entender as relações entre os pontos de dados.

  • Crie gráficos, não infográficos. Infográficos são representações artísticas de dados, e seu objetivo principal é contar histórias visuais. Os gráficos podem (e devem) ser visualmente atraentes, mas deixam que os dados falem por si.

  • Evite skeumorphism, gráficos de barras pictóricas, hashmarks de contraste e outros toques de infográficos.

  • Não use efeitos 3D como elemento decorativo. Use-os apenas se eles realmente integrarem a capacidade do usuário de compreender as informações.

  • Evite usar várias linhas e preenchimentos, pois mais de duas cores podem dificultar a leitura e interpretação correta desse tipo de gráfico.

  • Não use um gráfico (ou qualquer ilustração) como único meio de entender um conceito ou interagir com dados. Isso apresenta dificuldades para os usuários com deficiência visual.

  • Não use gráficos como elementos gratuitos ou decorativos em uma página. Em outras palavras, se um gráfico não agregar valor ou ajudar os usuários a resolver um problema, não o use.

Tipos de gráfico

Os tipos de gráficos usados no Visual Studio incluem gráficos de barras, gráficos de linhas, um gráfico de pizza modificado conhecido como gráfico de anel ou "gráfico de rosquinhas", linhas do tempo, gráficos de dispersão (também chamados de "gráficos de cluster") e gráficos de Gantt. Cada tipo de gráfico é útil para comunicar um tipo diferente de informação.

Outras considerações sobre gráficos

Cor

Há uma paleta específica de cores de gráficos definida para uso no Visual Studio. A paleta é acessível para os principais tipos de daltonismo, e as cores podem ser diferenciadas mesmo quando usadas como fatias muito estreitas de cor. Você pode usar essas cores em qualquer combinação para qualquer tipo de gráfico ou gráfico em sua interface do usuário. Você não precisa usar todas as sete cores se você não precisa de tantas cores distintas. Essas cores não foram projetadas para serem usadas com nenhum elemento de primeiro plano, portanto, não coloque texto ou glifos sobre essas cores. Esses matizes devem ser codificados e expostos à personalização do usuário em Opções de ferramentas > (consulte Expondo cores para usuários finais).

Amostra Hex RGB
Swatch 71B252 #71B252 113,178,82
Swatch BF3F00 #BF3F00 191,63,0
Swatch FCB714 #FCB714 252,183,20
Swatch 903F8B #903F8B 144,63,139
Swatch 117AD1 #117AD1 17,122,209
Swatch 79D7F2 #79D7F2 121,215,242
Swatch B5B5B5 #B5B5B5 181,181,181

Interface do usuário no objeto e espiando

Esta seção fornece contexto para espiar, também conhecido como modo de exibição de visualização de código, um tipo de interface do usuário no objeto exclusivo do Visual Studio.

  • A interface do usuário no objeto deve fornecer ao usuário mais informações ou interatividade sem prejudicar sua tarefa principal.

  • O padrão principal para a interface do usuário no objeto no Visual Studio é conhecido como "informações no ponto de atenção".

  • A interface do usuário no objeto no Visual Studio é embutida ou flutuante e durável ou transitória.

    • O modo de exibição de visualização de código, um tipo de interface do usuário no objeto no Visual Studio, é embutido e durável.

    • CodeLens, um tipo de interface do usuário no objeto no Visual Studio, é flutuante e transitório

    Entender como um pedaço de código funciona, ou encontrar detalhes sobre esse código, geralmente requer que um desenvolvedor alterne o contexto e vá para outro conteúdo ou outra janela. Essas mudanças de contexto podem causar interrupções, porque os usuários podem perder o foco em sua tarefa original se deixarem a janela principal. Além disso, obter esse contexto original de volta pode ser difícil, especialmente se a troca de janelas fez com que seu código original fosse obscurecido por outra interface do usuário.

    A interface do usuário no objeto segue um padrão chamado "informações no ponto de atenção". Essas mensagens, janelas pop-up e caixas de diálogo fornecem aos usuários informações adicionais e relevantes que adicionam esclarecimento ou interatividade sem perder o foco em sua tarefa principal. Exemplos de interface do usuário no objeto incluem janelas pop-up que aparecem quando um usuário passa o ponteiro do mouse sobre um ícone na área de notificação, o rabisco vermelho sob uma palavra incorreta e o modo de exibição de visualização introduzido no Visual Studio 2013.

Pontos de decisão

No Visual Studio, há várias maneiras de usar esse padrão de informações no ponto de atenção. Escolher o mecanismo certo e implementá-lo de forma consistente e previsível é essencial para a experiência geral. Caso contrário, os usuários podem ser apresentados a uma experiência confusa ou inconsistente que tira o foco do próprio conteúdo.

Relações entre o conteúdo mestre e o conteúdo detalhado

As informações no ponto de atenção são usadas para exibir uma relação entre o conteúdo no qual o usuário está focado (o conteúdo "mestre") e o conteúdo relacionado adicional (o conteúdo "detalhado"). Nesse padrão, o conteúdo detalhado está claramente relacionado ao conteúdo com o qual o usuário está trabalhando e pode ser exibido próximo ao conteúdo mestre. Informações complementares ou informações que não podem ser resumidas sem sobrecarregar o conteúdo mestre devem seguir outro padrão, como uma janela de ferramenta.

  • Sempre exiba o conteúdo detalhado em estreita proximidade com o conteúdo mestre.

  • Certifique-se sempre de que o conteúdo detalhado ainda permita que um usuário permaneça focado no conteúdo mestre. Muitas vezes, a melhor maneira de conseguir isso é renderizar o conteúdo detalhado o mais próximo possível do conteúdo mestre. Isso pode ser feito renderizando o conteúdo de detalhes em uma janela pop-up ao lado do conteúdo mestre ou renderizando o conteúdo de detalhes embutido abaixo do conteúdo mestre.

  • Nunca use informações no ponto de atenção que afastem o usuário do conteúdo mestre. Se os usuários precisarem exibir o conteúdo detalhado separadamente, exponha uma ação explícita que permita que o usuário faça isso.

Detalhes do projeto

Depois de determinar que a interface do usuário no objeto é a escolha certa, há quatro considerações principais de design:

  1. Persistência: espera-se que o conteúdo seja durável ou transitório? Os usuários desejarão manter as informações visíveis para consultar ou interagir? Ou os usuários vão querer olhar rapidamente para as informações e, em seguida, continuar com sua tarefa principal?

  2. Tipo de conteúdo: o conteúdo será informativo, acionável ou de navegação? O usuário precisa de detalhes adicionais sobre o conteúdo mestre? O usuário precisa concluir uma tarefa que afeta o conteúdo mestre? Ou o usuário precisa ser direcionado para outro recurso?

  3. Tipo de indicador: um indicador de ambiente faz sentido? As informações podem ser resumidas de forma útil e exibidas sem sobrecarregar o conteúdo mestre?

  4. Gestos: quais gestos serão usados para invocar e descartar a interface do usuário? Como o usuário vai trazer o conteúdo detalhado e enviá-lo embora? Há valor em adicionar um gesto como fixar para alternar entre estados transitórios e duráveis?

    Cada um desses quatro pontos de decisão terá um impacto nos principais componentes da interface do usuário no objeto.

Componentes da interface do usuário no objeto

  1. Tipo de contêiner (apresentador de conteúdo)

    • Flutuante

    • Embutido

  2. Tipo de conteúdo

    • Informativos: dados que podem ser estáticos ou dinâmicos

    • Acionável: comandos que alteram o conteúdo mestre

    • Navegação: links que levam o usuário a outra janela ou aplicativo, como MSDN

  3. Gestos

    • Invocação

    • Despedimento

    • Fixação

    • Outras interações

  4. Modelo de persistência e confirmação

    • Transitório

    • Durável

    • Automático

    • Sob demanda

  5. Indicadores ambientais (opcional)

    • Sublinhado rabisco

    • Ícone de marca inteligente

    • Outros indicadores ambientais

Tipo de contêiner (apresentador de conteúdo)

Existem duas opções principais disponíveis para apresentar o conteúdo no ponto de atenção:

  1. Inline: um apresentador embutido, como o modo de exibição de visualização que foi introduzido no Editor de Códigos do Visual Studio 2013, abre espaço para novo conteúdo alterando o conteúdo existente.

    • Prefira apresentadores embutidos se você espera que os usuários queiram gastar uma quantidade significativa de tempo consultando ou interagindo com o conteúdo que você apresenta.

    • Evite apresentadores embutidos se você espera que os usuários queiram olhar para as informações que você apresenta e, em seguida, continue com sua tarefa principal com o mínimo de interrupção.

  2. Flutuante: um apresentador flutuante é posicionado o mais próximo possível do conteúdo selecionado, mas não altera o layout do conteúdo existente. Várias estratégias podem ser empregadas, como exibir um painel de conteúdo flutuante sobre o espaço em branco disponível mais próximo do símbolo selecionado.

    • Prefira apresentadores flutuantes se você espera que os usuários queiram olhar para as informações que você apresenta e, em seguida, continue com sua tarefa principal com o mínimo de interrupções.

    • Evite apresentadores flutuantes se você espera que os usuários queiram gastar uma quantidade significativa de tempo se referindo ou interagindo com o conteúdo que você apresenta.

Tipo de conteúdo

Há três tipos principais de conteúdo que podem ser exibidos dentro de qualquer contêiner de interface do usuário no objeto. Qualquer combinação desses tipos de informações pode ser mostrada. Os três tipos são:

  1. Informativo: a maioria dos contêineres de interface do usuário no objeto exibirá algum tipo de conteúdo informativo. O conteúdo pode representar informações sobre o estado atual do ambiente ou pode representar informações sobre um potencial estado futuro do ambiente. Por exemplo, ele pode ser usado para mostrar o efeito de um comando específico, como uma refatoração, no código existente.

    • Sempre use a representação canônica das informações exibidas. Por exemplo, o código deve se parecer com o código, completo com realce de sintaxe e deve respeitar qualquer fonte e outras configurações de ambiente definidas pelo usuário.

    • Sempre considere apoiar quaisquer ações sobre o conteúdo informativo que seriam possíveis se essas mesmas informações fossem apresentadas como conteúdo mestre. Por exemplo, se apresentar código existente dentro de um contêiner de interface do usuário no objeto, considere fortemente oferecer suporte à capacidade de procurar e modificar esse código.

    • Sempre considere usar uma cor de plano de fundo diferente se apresentar conteúdo informativo que represente um estado futuro potencial.

  2. Acionável: alguns contêineres de interface do usuário no objeto fornecerão a capacidade de executar alguma ação sobre o conteúdo mestre, como executar uma operação de refatoração.

    • Sempre posicione comandos acionáveis separadamente do conteúdo informativo.

    • Sempre habilite e desabilite ações quando apropriado.

    • Sempre consulte as diretrizes padrão para representar comandos dentro de caixas de diálogo.

    • Sempre mantenha o número de ações expostas em um contêiner de interface do usuário no objeto em um mínimo absoluto. Interagir com a interface do usuário no objeto deve ser uma experiência leve e rápida. O usuário não deve ter que gastar energia no gerenciamento do próprio contêiner da interface do usuário no objeto.

    • Sempre considere como e quando um contêiner de interface do usuário no objeto será fechado ou descartado. Como prática recomendada, qualquer ação que conclua a caixa de diálogo entre o conteúdo mestre e detalhado também deve fechar o contêiner da interface do usuário no objeto quando essa ação for chamada.

  3. Navegação: alguns contêineres de interface do usuário no objeto incluem links que levam o usuário a outra janela ou aplicativo, como abrir um artigo do MSDN no navegador da Web do usuário.

    • Sempre coloque qualquer link de navegação com "Aberto" para que os usuários não sejam surpreendidos ao serem navegados para algum outro conteúdo.

    • Sempre separe os links de navegação dos links acionáveis.

Indicadores ambientais (opcional)

Os indicadores de ambiente podem ser sutis, incluindo texto apresentado em uma cor contrastante do resto do código, ou óbvios, incluindo símbolos de tickler, como sublinhados rabiscos e ícones de marcas inteligentes. Os indicadores ambientais comunicam a disponibilidade de informações adicionais e relevantes. O ideal é que eles forneçam informações úteis mesmo sem exigir que o usuário interaja com eles.

  • Sempre posicione um indicador de ambiente para que ele não distraia ou sobrecarregue o usuário. Se for impossível posicionar um indicador ambiental dessa forma, considere outra solução.

  • Sempre posicione o indicador de ambiente o mais próximo possível do conteúdo ao qual ele está relacionado.

  • Procure sempre criar um indicador que resuma as informações disponibilizadas. Considere fornecer uma contagem do número de itens de dados disponíveis (por exemplo, "3 referências" em vez de simplesmente "Referências") ou pense em alguma outra maneira de resumir os dados.

    • Nos casos em que os dados de um indicador nem sempre podem ser computados e exibidos, considere imediatamente fornecer feedback progressivo à medida que os valores são calculados. Por exemplo, considere animar alterações que reflitam atualizações para os dados disponíveis, semelhante à maneira como o bloco dinâmico de email no Windows Phone é atualizado à medida que o número de emails não lidos aumenta.
  • Nunca adicione mais indicadores do que um usuário pode razoavelmente aceitar para um determinado conteúdo. Os indicadores ambientais devem ser úteis sem exigir qualquer interação do usuário. Os indicadores perdem sua ambiência se precisarem de estouro e outros controles gerenciais para trazê-los à vista.

Gestos

Um aspecto fundamental de permitir que o usuário mantenha o foco no conteúdo mestre é oferecer suporte aos gestos certos para abrir e descartar o conteúdo de detalhes adicionais.

  • Sempre exija que o usuário execute algum gesto explícito para abrir o conteúdo adicional. Os gestos abertos comuns incluem:

    • Focalizar: dicas de ferramentas ou conteúdo informativo não interativo

    • Comando explícito: apresentador embutido

    • Clique duas vezes no indicador de ambiente: janela pop-up do CodeLens

  • Sempre descarte o conteúdo detalhado sempre que o usuário pressionar a tecla Esc.

  • Sempre considere o contexto da interface do usuário no objeto. Para apresentadores de conteúdo que permitem a interação dentro do contêiner, considere cuidadosamente se deseja mostrar informações adicionais ao passar o mouse, o que provavelmente prejudicará o fluxo de trabalho do usuário.

  • Nunca exiba conteúdo em foco que pareça ser editável ou que convide à interação do usuário. Esse comportamento pode frustrar os usuários se eles tentarem mover o cursor sobre o conteúdo de detalhes, pois o comportamento padrão para uma dica de ferramenta é descartar imediatamente quando o cursor não estiver mais sobre o conteúdo mestre que o produziu.

Modelos de seleção

Um modelo de seleção é o mecanismo usado para indicar e confirmar operações em um ou mais objetos de interesse dentro da interface do usuário. Este tópico discute padrões de interação de seleção em editores de documentos do Visual Studio: editores de texto, superfícies de design e superfícies de modelagem.

Os usuários devem ter uma maneira de indicar ao Visual Studio no que estão trabalhando, e o Visual Studio deve responder previsivelmente com comentários aos usuários sobre o que ele está operando. Diferenças ou uma falha de comunicação entre o usuário e a interface do usuário podem fazer com que o usuário não perceba uma ação, o que pode ter consequências não intencionais. Muitas vezes, o erro passa despercebido até que o usuário veja que algo está faltando ou foi alterado. Os modelos de seleção são, portanto, uma das peças mais críticas do design da interface do usuário. Embora os modelos de seleção no Visual Studio sejam consistentes com o Windows, há pequenas variações.

No Visual Studio, como no Windows, os modelos de seleção diferem dependendo do contexto em que a interação ocorre. As seleções podem ocorrer em quatro tipos de objetos:

  • Texto

  • Objetos gráficos

  • Listas e árvores

  • Grades

    Dentro desses objetos, há três tipos de seleções:

  • Contíguo

  • Separado

  • Region

Escopo

O componente mais importante da seleção é garantir que o usuário saiba em qual janela está trabalhando (ativação) e onde o foco está localizado (seleção). O Visual Studio estende a funcionalidade de gerenciamento de janelas no Windows, mas o esquema de ativação é o mesmo: interagir com uma janela traz o foco para a janela. O Visual Studio tem dois indicadores para ativação: um para janelas de documento e outro para janelas de ferramentas.

Para janelas de documento, a janela ativa é indicada por uma guia de janela de documento que vem para a frente e altera sua cor de fundo:

Active tab selection in Visual Studio

Seleção de guia ativa

Para janelas de ferramentas, a janela ativa é indicada por uma alteração na cor da área da barra de título da janela de ferramentas:

Active tool window selection in Visual Studio

Janela de ferramenta ativa mostrando a seleção primária de um nó

Inactive tool window selection in Visual Studio

Janela de ferramenta inativa, mostrando a seleção latente do nó

Uma vez que uma janela está ativa, seu foco é indicado de acordo com os modelos de seleção descritos nesta seção das diretrizes.

Contexto

O Visual Studio foi projetado para manter um forte conceito de contexto, mantendo o controle de onde o usuário está trabalhando. Apenas uma janela está ativa, seja uma ferramenta ou uma janela de documento. No entanto, a janela de documento mais alta sempre mantém uma seleção latente. Embora o foco possa estar em uma janela de ferramenta, a janela de documento que foi ativa pela última vez exibe uma seleção, mesmo em um estado inativo. Isso é feito para reter o contexto do usuário no documento que ele estava editando, mostrando a ele que o Visual Studio manteve seu estado para que eles possam retornar e alternar perfeitamente entre as janelas de ferramentas e as janelas de documento.

Seleção de texto

Os editores do Visual Studio que são estritamente textuais, como o editor de texto interno, usam o mesmo modelo de seleção de texto e aparência descritos na página Mouse e Ponteiros das Diretrizes de Interação da Experiência do Usuário do Windows no MSDN. O foco de entrada no editor de texto é indicado por uma barra vertical chamada ponto de inserção. O ponto de inserção é um único pixel de espessura e colorido como o inverso do que aparece atrás dele. Ele pisca de acordo com a taxa definida pela configuração Taxa de piscamento do cursor na guia Velocidade do miniaplicativo Teclado no Painel deControle.

Seleção contígua e disjunta

A seleção dentro do editor de texto é contígua somente. Seleções de texto desconjuntadas não são permitidas, mas devem ser abordadas em editores de objetos gráficos. Quando o ponteiro do mouse do usuário está sobre uma área de texto, o cursor muda para um feixe de I. Um único clique coloca o ponto de inserção no editor de texto no local de clique. Segurar o botão do mouse para baixo inicia um realce de seleção e soltar o botão do mouse termina o realce de seleção.

Seleção de região (seleção de caixa)

O Visual Studio oferece suporte a seleções de região no editor de texto, e isso é chamado de seleção de caixa. A seleção de caixa permite que o usuário selecione uma região de texto que não siga o fluxo de texto normal. Assim como na seleção de texto padrão, a seleção deve ser contígua. A seleção da caixa é iniciada mantendo pressionada a tecla Alt enquanto arrasta com o mouse. A seleção de caixa também pode ser iniciada mantendo pressionadas as teclas Alt e Shift enquanto usa as teclas de seta para indicar a região de seleção. A seleção de caixa usa o realce de seleção normal e mostra o cursor do ponto de inserção piscando no final da área de seleção.

Regional (box) selection in Visual Studio

Seleção de região (caixa) no Visual Studio

Aparência da seleção de texto

As cores usadas para seleção ativa e inativa no editor podem ser personalizadas. Para personalizar a aparência visual do editor, um usuário pode ir para Opções de Ferramentas > e, em seguida, procurar em Fontes de Ambiente e Editor de Texto de > Cores>.

Seleção gráfica

Interação

A seleção de objetos gráficos pode ser complexa e depende de vários fatores:

  • Modelo de seleção primária do editor. Os editores que contêm objetos gráficos também podem ser usados para editar texto ou grades. Por exemplo, o editor pode ser um editor baseado em texto que também oferece suporte ao posicionamento de objetos gráficos, como o designer XAML do Visual Studio. O suporte a vários tipos de objeto pode afetar a forma como o usuário seleciona grupos compostos por diferentes tipos de objetos.

  • Suporte para estados de seleção primária e secundária. Um editor pode fornecer estados de seleção primários e secundários para que os objetos possam ser editados em uníssono, alinhados entre si, redimensionados juntos e assim por diante.

  • Suporte à edição in-loco. Os editores também podem permitir que o conteúdo de seus objetos gráficos seja editado. Por exemplo, uma forma de retângulo também pode conter texto no interior que pode ser alterado pelo usuário. Além disso, esse texto poderia ser centralizado ou justificado. A edição in-loco envolve um nível mais detalhado de interação do usuário e, portanto, requer um conjunto apropriado de pistas visuais para apresentar informações de estado ao usuário.

Interação por mouse

Entrada Resultado
Clique em um objeto não selecionado Seleciona o objeto e exibe uma linha tracejada e alças de seleção, se o objeto for redimensionável.
Clique em um objeto selecionado Ativa a edição in-loco se o objeto oferecer suporte a ela. Clicar fora do objeto desativa o modo de edição in-loco.
Clique duas vezes em um objeto Abre o código por trás do objeto para edição e pode inserir um manipulador de eventos padrão, se apropriado.
Aponte para um objeto Altera o ponteiro para o cursor de movimentação. A aparência do objeto, como sua luminosidade ou cor, pode mudar.
Aponte para uma alça de seleção Altera o ponteiro para o cursor de redimensionamento. Para objetos que oferecem suporte à rotação, algumas alças de seleção podem alterar o ponteiro para um cursor de rotação à medida que o ponteiro é posicionado de forma diferente (por exemplo, movido para mais longe) em relação à alça de seleção.
Arrastar Mesmo que o objeto não esteja selecionado anteriormente, altere o ponteiro para o cursor de movimento e mova o objeto.
Editor perde o foco Desativa o modo de edição in-loco, embora o objeto mantenha o conteúdo e a aparência que tinha durante seu último estado de operação/seleção.
Seleção de objetos Indicado por uma borda, linha pontilhada ou outro tratamento visualmente distinto para realçar o limite do objeto.
Redimensionar um objeto selecionado Indicado por alças de seleção.

Um objeto redimensionável tem oito alças, representando cada direção em que ele pode ser redimensionado. Menos alças podem ser usadas se o objeto só puder ser redimensionado em determinadas direções. Quando o usuário dimensiona um objeto para onde oito alças não seriam interativas, então quatro alças podem ser usadas. Os tamanhos de identificador devem ser vinculados à borda da janela e às métricas de borda com a função GetSystemMetrics API para dimensionar proporcionalmente à resolução de exibição.

Resize handles
Girar um objeto selecionado Rotate handles

Interação com o teclado

Entrada Resultado
Tabulação Move o indicador de foco entre a ordem lógica dos objetos no editor. Isso pode ser da esquerda para a direita ou de cima para baixo, dependendo do valor da propriedade TabIndex (ou equivalente), da ordem de criação do objeto e da finalidade geral do editor. Shift+Tab inverte a direção do indicador de foco.
Barra de espaço Ativa o modo de movimento panorâmico enquanto o pressionamento de tecla é mantido. É necessária uma entrada adicional do mouse para deslocar a posição do visor.
Ctrl+Barra de espaços Ativa o modo de zoom enquanto o pressionamento de tecla é mantido. É necessária uma entrada de mouse adicional para aumentar e diminuir o fator de zoom.
Ctrl+Alt+Sinal de subtração Diminui o fator de zoom em um nível.
Ctrl+Alt+Sinal de adição Aumenta o fator de zoom em um nível.
Shift OU Ctrl Adiciona o objeto ao grupo de seleção. Ctrl também permite remover objetos individualmente do grupo de seleção.
Enter Executa o comando padrão para o objeto (geralmente Abrir ou Editar).
F2 Ativa a edição in-loco para o objeto.
Teclas de direção Move o(s) objeto(s) selecionado(s) na direção da tecla de seta pressionada, em pequenos incrementos (por exemplo, 1 pixel de cada vez)
Ctrl+teclas de seta Move o(s) objeto(s) selecionado(s) na direção da tecla de seta pressionada, em incrementos maiores (por exemplo, 10 pixels por vez)
Shift+teclas de seta Redimensiona o(s) objeto(s) selecionado(s) na respectiva direção, em pequenos incrementos (por exemplo, 1 pixel de cada vez)
Ctrl+Shift+teclas de seta Redimensiona o(s) objeto(s) selecionado(s) na respectiva direção, em incrementos maiores (por exemplo, 10 pixels por vez)

Quando os usuários editam controles no local, pode fazer sentido que os objetos sejam redimensionados automaticamente com a entrada do usuário. Por exemplo, se o usuário editar um controle de rótulo, o rótulo deverá crescer para exibir o texto que o usuário acabou de digitar. Se isso não for feito, o usuário deve redimensionar o controle manualmente após editar o texto. Se o usuário tiver muitos controles, isso se torna uma tarefa rotineira e improdutiva.

Contêineres gráficos

Em alguns casos, os editores gráficos fornecem contêineres para outros objetos gráficos, como o controle Windows Forms Panel ou o controle Grid Layout no designer HTML. Se o editor fornecer contêineres para outros objetos gráficos, o seguinte modelo de seleção deverá ser usado somente para o contêiner (os objetos dentro do contêiner seguirão o modelo padrão, conforme descrito acima):

Entrada Resultado
Clique uma vez no contêiner Seleciona o objeto de contêiner sem selecionar diretamente nenhum dos objetos contidos. O contêiner pode ser movido e/ou redimensionado com entrada padrão de mouse e teclado (conforme descrito acima). Os objetos contidos são movidos em relação ao contêiner, mas os objetos contidos não são redimensionados, a menos que também sejam selecionados diretamente.
Passe o mouse sobre a região limite do contêiner Transforma o mouse no cursor de movimentação, indicando que o contêiner pode ser movido.
Arraste a região limite do contêiner Altera o mouse para o cursor de movimento e move o contêiner (e os objetos contidos dentro). O contêiner não pode ser movido sem antes ser selecionado com um único clique.
Clique uma vez em um objeto dentro do contêiner Desmarca o contêiner (se selecionado) e seleciona apenas o objeto clicado.
Shift+clique OU Ctrl+clique em um objeto contido e/ou contêiner Adiciona o objeto clicado a uma seleção ou grupo de seleção existente. Se o objeto clicado já for membro do grupo de seleção, ele será removido do grupo de seleção.

Os objetos contidos devem aderir ao modelo básico de seleção, conforme descrito na seção anterior. A partir do teste de usabilidade do designer do Windows Forms, os usuários esperavam acesso contínuo aos objetos contidos sem etapas intervenientes (impostas pelo objeto de contenção).

Seleções disjuntas e regionais

Os editores de objetos gráficos devem oferecer suporte a seleções disjuntas. Observe que esse gráfico não mostra a aparência de controle para o Visual Studio. Consulte Aparência da seleção de objetos gráficos para obter especificações visuais detalhadas.

Disjoint and region selectors

Seleção desconjuntada

Os editores gráficos também devem fornecer seleções de região com um indicador de seleção do tipo letreiro. Se o editor gráfico oferecer suporte a outros tipos de objeto (como texto), as seleções de região podem não ser possíveis, dependendo das restrições desses outros tipos de objeto.

Marquee selection

Seleção de letreiro

Seleções primárias e secundárias

Alguns editores de objetos gráficos permitem que o usuário edite ou alinhe objetos em grupos. Neste caso, é necessário introduzir o conceito de seleções primárias e secundárias. A seleção primária é o objeto ao qual todos os outros objetos respondem por operações de grupo. O objeto que o usuário seleciona primeiro se torna o controle primário e as seleções subsequentes se tornam as seleções secundárias. A seleção primária tem um tratamento visual distinto da(s) seleção(ões) secundária(s) para indicar qual objeto é primário:

Primary and secondary selection

Seleção primária com duas seleções secundárias

Aparência da seleção de objetos gráficos

As alças de seleção são quadrados desenhados em um padrão retangular ao redor da caixa delimitadora do objeto. O gráfico abaixo mostra exemplos dos vários estados que um objeto gráfico pode ter com alça, dimensionamento e aparência de edição in-loco. O tamanho das alças deve ser vinculado às métricas de borda e borda da janela usando a API GetSystemMetrics .

Estado Aparência Detalhes visuais
Desmarcado Default Default button state
Seleção primária Redimensionável Primary selection with resize handles
Seleção primária Não redimensionável Primary selection without resize handles
Seleção primária Bloqueada Primary selection locked
Seleção secundária Redimensionável Secondary selection with resize handles
Seleção secundária Não redimensionável Secondary selection without resize handles
Seleção secundária Bloqueada Secondary selection locked
Interface do usuário ativa Default UI active state

Ver modelos de seleção

Modo de exibição de árvore

A seleção em uma exibição de árvore é mostrada com um realce simples. Se o usuário clicar em um nome de nó ou em um ícone de nó, o nó será selecionado. Os glifos triangulares à esquerda do nó expandem ou contraem o controle de árvore, mas não afetam a seleção do usuário, com uma exceção: ao recolher um nó pai quando a seleção está em um filho desse nó, a seleção se move para o pai.

Typical tree view in Visual Studio

Modo de exibição de árvore típico no Visual Studio

As exibições em árvore podem oferecer suporte a seleções contíguas e disjuntas, mesmo em vários níveis na árvore. Seleções múltiplas contíguas ou disjuntas devem ser feitas em nós de árvore visíveis. Se um nó for recolhido, a seleção disjunta será perdida e o nó que foi recolhido obterá a seleção. Dessa forma, o usuário pode ver os nós que serão afetados por uma operação. Quando os nós são recolhidos, não fica claro quais nós podem ser afetados.

Quando um nó pai é selecionado, a operação deve se aplicar ao pai, embora possa haver casos em que faça sentido que uma operação se aplique ao pai e a todos os seus filhos. Nesse caso, forneça interface do usuário adicional durante a operação, como uma caixa de seleção ou caixa de diálogo de confirmação para tornar a opção "aplicar a todos os filhos" explícita ao usuário.

Renomear

Se os nós na árvore suportarem a renomeação, a renomeação deve ser feita no lugar. A operação in-loco deve ser o padrão em todos os controles de árvore no Visual Studio. Forneça um comando renomear que ative imediatamente o modo de edição in-loco, com a seleção de texto cobrindo todo o nome do nó, pronto para aceitar a entrada do usuário. Se o nó representar um arquivo, o nome do arquivo deverá conter a extensão. O realce de seleção deve incluir apenas o corpo do nome do arquivo e não a extensão.

Entrada Resultado
Tecla Enter Confirma a operação de renomeação
Tecla Esc Cancela a operação de renomeação
Clicar fora da região de edição in-loco Confirma a operação de renomeação
Desfazer Fornecer desfazer fácil para cancelar a operação de renomeação

Seleção em listas e controles de grade

O conceito-chave na seleção de lista é que ela é baseada em linha, o que significa que, quando uma seleção é feita, a linha inteira é selecionada como uma unidade. Por outro lado, as grades podem permitir que células específicas sejam selecionadas sem afetar qualquer outro aspecto da linha. As grades também podem conter uma hierarquia de linhas aninhadas (como em um TreeGrid) que permitem que ramificações inteiras da hierarquia sejam selecionadas e desmarcadas interagindo com as linhas pai. A seleção em listas é mostrada por uma cor de realce simples em toda a linha de dados. O foco é mostrado por uma borda pontilhada de pixel único ao redor da linha ou célula editável atual (linha se todas as células forem somente leitura).

Observação

Foco e seleção são conceitos diferentes. Foco é uma indicação de qual elemento da interface do usuário é direcionado para receber entrada não explicitamente direcionada a outro objeto, enquanto seleção refere-se ao estado da inclusão de um objeto em um conjunto de objetos nos quais operações subsequentes podem ocorrer.

As seleções em listas podem ser contíguas, desconexas ou regionais. Quando várias seleções são permitidas, a seleção contígua e separada deve sempre ser suportada, enquanto o suporte para seleções de região (caixa) é opcional. As seleções de região são iniciadas arrastando o espaço em branco do corpo da lista.

Objeto Seleção
Lista Contíguo
Lista Separado
Lista Region

Clicar uma vez em uma lista seleciona a linha onde o clique ocorreu. Se o usuário clicar em uma célula de lista que ofereça suporte à edição in-loco, a célula também será ativada imediatamente para edição in-loco. Caso contrário, a linha inteira será imediatamente selecionada e mostrará um realce.

Arrastar no corpo da lista faz uma de três coisas:

  • Inicia uma seleção de região se a lista oferecer suporte a ela e o mouse-down estiver em espaço em branco

  • Inicia uma operação de arrastar/soltar se a célula ou linha da lista oferecer suporte a ser uma fonte de arraste

  • Seleciona a linha atual

Edição in-loco

Quando a edição in-loco é permitida, há dois modelos básicos: controle de edição simples e seletor de propriedades. Com um controle de edição simples, o conteúdo é realçado e pronto para entrada do usuário assim que a edição in-loco é ativada. Quando um seletor de propriedades é implementado, o botão que invoca o seletor de propriedades é exibido assim que o modo de edição in-loco é ativado e a seleção atual não é realçada. O botão de seletor deve ser justificado à direita na célula. Para obter exemplos de edição in-loco, consulte a janela Propriedades e a Lista de tarefas no Visual Studio.

Suporte de teclado

O suporte ao teclado para seleção em listas e grades segue as convenções padrão do Windows:

  • As teclas de seta navegam na lista, selecionando cada linha/célula à medida que o foco é movido.

  • Shift + seta executa uma seleção contígua na direção das teclas de seta.

  • Ctrl + seta seguida pela Barra de espaço alterna entre adicionar e remover itens de lista da seleção, criando uma seleção separada.

  • Para grades que contêm hierarquias aninhadas, a tecla Seta para a direita expande uma linha pai e a tecla Seta para a esquerda recolhe uma.

  • A tecla Tab move o foco entre as células na linha atual se as células forem editáveis.

  • A tecla Enter executa o comando padrão no item da lista (geralmente Abrir).

  • A tecla F2 ativa a edição in-loco para a célula selecionada no momento.

Configurações de persistência e salvamento

Embora cada componente de software no Visual Studio seja geralmente responsável por seu próprio estado e persistência, o Visual Studio salva automaticamente as configurações em alguns casos, como com tamanhos e posições de janela. A tabela abaixo é uma combinação de configurações salvas automaticamente e configurações que exigem que um usuário explícito ou uma ação programada seja executada.

Objeto O que economizar Quando salvar Onde economizar
Objeto selecionável (por exemplo, uma linha de código) Um ponto de interrupção em uma linha de código

Um atalho de usuário associado à linha de código
Quando o projeto é salvo O arquivo de opções do usuário (.suo) para o projeto
Caixa de diálogo O local da caixa de diálogo, se ela tiver sido movida

O modo de exibição que o usuário usou pela última vez na caixa de diálogo
Quando a caixa de diálogo é fechada

Quando a sessão do Visual Studio termina
Na memória

Registro em HKEY_Current_User
Janela O tamanho e a localização da janela Quando a janela fecha

Quando o modo do Visual Studio é alterado

Quando a sessão do Visual Studio termina
O arquivo de opções do usuário (.suo) para o projeto

Arquivo de opções personalizadas para configurações de janela
Documento A seleção atual no documento

A exibição do documento

Os últimos vários lugares que o usuário visitou
Quando o documento é salvo O arquivo de opções do usuário (.suo) para o projeto
Projeto Referências a arquivos

Referências a diretórios no disco

Referências a outro software

Componentes

Estabeleça informações sobre o projeto em si
Quando o projeto é salvo O arquivo de projeto
Solução Referências a projetos

Referências a arquivos
Quando o projeto ou solução é salvo O arquivo de solução (.sln)
Configurações em Opções de Ferramentas > Personalizações do teclado

Personalizações da barra de ferramentas

Esquemas de cor
Quando a caixa de diálogo Opções de Ferramentas > é fechada

Quando a sessão do Visual Studio termina
Registro em HKEY_Current_User

O que o usuário está fazendo, e quando ele está fazendo, determina se uma configuração está sendo salva na memória (durante a sessão), salva em disco (entre sessões como uma configuração do Registro), como parte do próprio arquivo de projeto ou solução, como parte do arquivo de opções de solução (.suo) ou como um arquivo de configurações personalizadas que somente esse componente de software conhece. A tabela acima mostra vários eventos nos quais as configurações podem ser salvas. No entanto, há outros momentos em que você pode querer salvar o estado:

  • Quando o usuário muda de local em uma caixa de diálogo ou janela

  • Quando o usuário transfere o foco para outra janela

  • Quando o usuário alterna do modo de design para o modo de depuração

  • Quando o usuário faz logoff de sua conta

  • Quando o computador entra em hibernação ou é desligado

  • Quando o computador/disco rígido está prestes a ser reformatado e configurado novamente

Configurações de janela

Uma configuração de janela é a apresentação básica do ambiente de desenvolvimento - é um esquema que consiste na lista de janelas de ferramentas presentes e a maneira como elas são organizadas. Para janelas gerenciadas pelo IDE (janelas do IDE), as informações de layout são persistentes por usuário, portanto, quando um usuário inicia o IDE, o layout da janela aparece da mesma forma que quando eles saíram do Visual Studio pela última vez. O estado e a posição das janelas do IDE são mantidos em um arquivo de opções personalizado no formato XML. As janelas de ferramentas criadas por pacotes carregados no IDE persistem suas informações de estado no Registro e podem ou não ser por usuário.

Layouts específicos do perfil

Cada perfil inclui layouts de janela de ferramenta, organizados de maneira familiar a personas de desenvolvedor específicas (os desenvolvedores do Visual C++ esperam ver o Gerenciador de Soluções no lado esquerdo do IDE, enquanto os desenvolvedores do C# esperam ver o Gerenciador de Soluções à direita). Os layouts de janela específicos do perfil são carregados depois que o usuário escolhe um perfil na inicialização. Um autor de pacote deve determinar o layout de janela mais adequado para a experiência do cliente, sabendo que as alterações feitas pelo usuário na configuração da janela serão persistentes.

Entrada por toque

Os usuários estão usando cada vez mais os produtos de desenvolvimento da Microsoft em dispositivos sensíveis ao toque. No entanto, existem barreiras que dificultam o uso de ferramentas de desenvolvimento em dispositivos sensíveis ao toque. Os usuários esperam que nossos produtos forneçam uma experiência de toque confiável e precisa. A intenção dessas diretrizes é informar as decisões sobre quais recursos de toque incorporar e incentivar uma experiência de toque consistente no Visual Studio e em produtos relacionados.

Níveis de experiência

Os níveis de experiência a seguir servem como um guia para ajudar as equipes a decidir quais recursos de toque oferecer com base em seu nível desejado de interesse de investimento em contato.

  • A experiência básica é para equipes que desejam fornecer recursos de toque para que não haja becos sem saída ao longo de seu trabalho.

  • A experiência otimizada é para equipes que desejam fornecer os recursos de toque mais comuns (por exemplo, aqueles normalmente disponíveis em aplicativos de navegador da Internet).

  • A experiência elevada é para equipes que desejam adicionar recursos como gestos ou outros recursos opcionais que podem tornar seu aplicativo amigável ao toque.

Experiência básica Experiência otimizada Experiência elevada
Permite que os usuários ... Corrija o código e a leitura em nível de solução/projeto sem becos sem saída Executar tarefas de manutenção, refatoração e navegação Opere em uma experiência consistente, intuitiva e fluida com confiança
Editor Movimento panorâmico e seleção por toque

Toque na barra de rolagem para pular e pressionar+arrastar
Apertar o zoom

Rolagem rápida

Seleção

Fácil uso do menu de contexto
Principais janelas de ferramentas Movimento panorâmico de lista

Seleção de item

Toque na barra de rolagem para pular e pressionar+arrastar
Fácil rolagem e seleção de itens
Janelas Redimensionar janela

Acesso rápido
Documente bem Fácil navegação entre arquivos abertos
Gestos Garantir que gestos comuns funcionem em todo o IDE Ações baseadas em gestos

Suporte a arrastar e soltar e designers
Outras considerações Teclado personalizado na tela

Gestos

Os gestos fornecem aos usuários um atalho para comandos que, de outra forma, poderiam exigir uma interação mais complicada. Consulte as diretrizes do Windows sobre gestos de toque comuns para aplicativos da área de trabalho e siga esta orientação para a maioria dos gestos, incluindo gestos simples, como movimento panorâmico e zoom.