CA1301: Evitare tasti di scelta rapida duplicati
Articolo | Valore |
---|---|
ID regola | CA1301 |
Category | Microsoft.Globalization |
Modifica | Nessuna interruzione |
Causa
Un tipo estende System.Windows.Forms.Control e contiene due o più controlli di primo livello con chiavi di accesso identiche archiviate in un file di risorse.
Descrizione regola
Un tasto di scelta, noto anche come acceleratore, consente l'accesso da tastiera a un controllo usando il tasto ALT . Quando più controlli hanno la stessa chiave di accesso, il comportamento della chiave di accesso non è ben definito. L'utente potrebbe non essere in grado di accedere al controllo previsto usando il tasto di scelta e un controllo diverso da quello previsto potrebbe essere abilitato.
L'implementazione corrente di questa regola ignora le voci di menu. Tuttavia, le voci di menu nello stesso sottomenu non devono avere chiavi di accesso identiche.
Come correggere le violazioni
Per correggere una violazione di questa regola, definire chiavi di accesso univoco per tutti i controlli.
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio seguente viene illustrato un modulo minimo che contiene due controlli con chiavi di accesso identiche. Le chiavi vengono archiviate in un file di risorse, che non viene visualizzato. Tuttavia, i relativi valori vengono visualizzati nelle righe impostate checkBox.Text
come commento. Il comportamento degli acceleratori duplicati può essere esaminato scambiando le checkBox.Text
righe con le controparti commentate. In questo caso, tuttavia, l'esempio non genererà un avviso dalla regola.
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);
}
}
}
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per