Freigeben über


CA1301: Doppelte Zugriffstasten vermeiden

TypeName

AvoidDuplicateAccelerators

CheckId

CA1301

Kategorie

Microsoft.Globalization

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Ein Typ erweitert System.Windows.Forms.Control und enthält mindestens zwei Steuerelemente der obersten Ebene mit identischen Zugriffstasten, die in einer Ressourcendatei gespeichert sind.

Regelbeschreibung

Eine Zugriffstaste ermöglicht den Zugriff auf ein Steuerelement unter Verwendung der ALT-TASTE. Wenn mehrere Steuerelemente über doppelte Zugriffstasten verfügen, ist das Verhalten der Zugriffstaste nicht stringent. Der Benutzer kann unter Umständen mithilfe der Zugriffstaste nicht auf das gewünschte Steuerelement zugreifen, und möglicherweise wird nicht das gewünschte Steuerelement aktiviert.

Bei der aktuellen Implementierung dieser Regel werden Menüelemente ignoriert. Menüelemente im gleichen Untermenü sollten jedoch nicht die gleichen Zugriffstasten haben.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, definieren Sie eindeutige Zugriffstasten für alle Steuerelemente.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Im folgenden Beispiel wird ein minimales Formular dargestellt, das zwei Steuerelemente mit gleichen Zugriffstasten enthält. Die Tasten sind in einer Ressourcendatei gespeichert, die nicht dargestellt ist. Die Werte dieser Tasten sind jedoch in den auskommentierten checkBox.Text-Zeilen enthalten. Das Verhalten doppelter Zugriffstasten kann überprüft werden, indem die checkBox.Text-Zeilen durch ihre auskommentierten Gegenstücke ausgetauscht werden. In diesem Fall wird im Beispiel jedoch keine Warnung aus der Regel generiert.

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);
      }
   }
}

Siehe auch

Referenz

System.Resources.ResourceManager

Konzepte

Ressourcen in Anwendungen