CA1301:避免使用重複的快速鍵
型別名稱 |
AvoidDuplicateAccelerators |
CheckId |
CA1301 |
分類 |
Microsoft.Globalization |
中斷變更 |
中斷 |
原因
型別會擴充 System.Windows.Forms.Control,並包含兩個以上的最上層控制項,但這些控制項在資源檔案中所儲存的便捷鍵 (Access Key) 是相同的。
規則描述
便捷鍵也稱為快速鍵,可讓鍵盤使用 ALT 鍵存取控制項。當多個控制項具有重複的便捷鍵時,就無法妥善定義便捷鍵的行為。使用者可能會無法使用便捷鍵存取所要的控制項,而且可能會啟用不想要的控制項。
此規則的目前實作會忽略功能表項目。不過,同一子功能表中的功能表項目不得有相同的便捷鍵。
如何修正違規
若要修正此規則的違規情形,請為所有控制項定義唯一的便捷鍵。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列範例會顯示最基本的表單,其中包含兩個具有相同便捷鍵的控制項。便捷鍵會儲存在資源檔中 (並未顯示)。不過,便捷鍵的值會出現在被標記為註解的 checkBox.Text 行中。交換 checkBox.Text 行與其被標記為註解的對應項,即可檢查重複快速鍵的行為。不過,在此情況下,範例將不會根據規則產生警告。
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);
}
}
}
請參閱
參考
System.Resources.ResourceManager