CA1301: Doppelte Zugriffstasten vermeiden.
Element | Wert |
---|---|
RuleId | CA1301 |
Category | 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 Tastenkombinationen, die in einer Ressourcendatei gespeichert sind.
Regelbeschreibung
Eine Tastenkombination (auch bezeichnet als Zugriffstaste) ermöglicht den Zugriff auf ein Steuerelement unter Verwendung der ALT-TASTE. Wenn mehrere Steuerelemente über die gleiche Tastenkombination verfügen, ist das Verhalten der Tastenkombination nicht klar definiert. Es kann vorkommen, dass Benutzer*innen mithilfe der Tastenkombination nicht auf das beabsichtigte Steuerelement zugreifen können und stattdessen ein anderes Steuerelement aktiviert wird.
Die aktuelle Implementierung dieser Regel ignoriert Menüelemente. Menüelemente im gleichen Untermenü sollten jedoch keine identischen Tastenkombinationen haben.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, definieren Sie eindeutige Tastenkombinationen für alle Steuerelemente.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Das folgende Beispiel zeigt ein Formular mit minimaler Funktionalität, das zwei Steuerelemente mit identischen Tastenkombinationen enthält. Die Tastenkombinationen werden in einer Ressourcendatei gespeichert, die hier nicht dargestellt ist. Ihre Werte sind jedoch in den auskommentierten checkBox.Text
-Zeilen angegeben. Sie können das Verhalten von doppelten Tastenkombinationen untersuchen, indem Sie die checkBox.Text
-Zeilen und ihre auskommentierten Gegenstücken austauschen. In diesem Fall generiert das Beispiel jedoch keine Warnung der Regel.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für