Compartilhar via


Evitar aceleradores duplicados

TypeName

AvoidDuplicateAccelerators

CheckId

CA1301

Category (Categoria)

Microsoft.globalização

Quebrando alterar

Não separável

Causa

Um tipo estende System.Windows.Forms.Control e contém dois ou mais controles de nível superior com as teclas de acesso idênticas são armazenadas em um arquivo de recurso.

Descrição da regra

Um acesso chave, também conhecido sistema autônomo um acelerador permite acesso de chave placa a um controle usando o ALT chave.Quando vários controles tem acesso duplicadas chave s, o comportamento do acesso chave não está bem definido.O usuário não poderá acessar o controle desejado usando a tecla de acesso e um controle Outros não um desejados podem ser ativado.

A implementação corrente desta regra ignora itens de menu.No entanto, itens de menu no submenu mesmo não devem ter as chaves de acesso idênticas.

Como corrigir violações

Para corrigir uma violação dessa regra, defina teclas de acesso exclusivo para todos os controles.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra um formulário mínimo que contém dois controles com chaves de acesso idênticas.As chaves são armazenadas em um arquivo de recurso que não é exibido; no entanto, seus valores aparecem no comentadas out checkBox.Text linhas. O comportamento de aceleradores duplicados pode ser examinado trocando o checkBox.Text linhas com suas contrapartes comentadas check-out. No entanto, nesse caso, o exemplo não irá gerar um aviso da regra.

using System;
using System.Drawing;
using System.Resources;
using System.Windows.Forms;

namespace GlobalizationLibrary
{
   public class DuplicateAccelerators : Form
   {
      [STAThread]
      public static void Main()
      {
         DuplicateAccelerators accelerators = new DuplicateAccelerators();
         Application.Run(accelerators);
      }

      private CheckBox checkBox1;
      private CheckBox checkBox2;

      public DuplicateAccelerators()
      {
         ResourceManager resources = 
            new ResourceManager(typeof(DuplicateAccelerators));

         checkBox1 = new CheckBox();
         checkBox1.Location = new Point(8, 16);
         // checkBox1.Text = "&checkBox1";
         checkBox1.Text = resources.GetString("checkBox1.Text");

         checkBox2 = new CheckBox();
         checkBox2.Location = new Point(8, 56);
         // checkBox2.Text = "&checkBox2";
         checkBox2.Text = resources.GetString("checkBox2.Text");

         Controls.Add(checkBox1);
         Controls.Add(checkBox2);
      }
   }
}

Consulte também

Conceitos

Recursos em aplicativos

Referência

System.Resources.ResourceManager