Compartilhar via


CA1301: evitar aceleradores duplicados

TypeName

AvoidDuplicateAccelerators

CheckId

CA1301

Categoria

Microsoft.Globalization

Alteração Significativa

Sem quebra

Causa

Um tipo estende Control e contém os controles dois ou mais de nível superior que têm as chaves idênticas de acesso que são armazenadas em um arquivo de recursos.

Descrição da Regra

Uma tecla de acesso, também conhecida como, um acelerador de teclado permite o acesso a um controle usando a tecla ALT.Quando vários controles de acesso tenham chaves duplicadas, o comportamento da tecla de acesso não é bem definido.O usuário não poderá acessar o controle planejado usando a tecla de acesso e um controle diferente de aquele que é destinado pode ser habilitado.

A implementação atual dessa regra ignora itens de menu.Entretanto, os itens de menu no mesmo submenu não devem ter chaves de acesso idênticas.

Como Corrigir Violações

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

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

O exemplo a seguir mostra uma forma mínimo que contém dois controles de acesso que têm chaves idênticas.As chaves são armazenadas em um arquivo de recursos, que não é mostrado; porém, seus valores aparecem nas linhas fora comentadas de checkBox.Text .O comportamento de aceleradores duplicados pode ser verificado trocando as linhas de checkBox.Text com suas contrapartes para fora comentadas.Porém, neste caso, o exemplo não 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

Referência

ResourceManager

Conceitos

Recursos em aplicativos de área de trabalho