CA1301: 중복 액셀러레이터 키를 사용하지 마십시오.
항목 | 값 |
---|---|
RuleId | CA1301 |
범주 | Microsoft.Globalization |
주요 변경 내용 | 주요 변경 아님 |
원인
형식이 System.Windows.Forms.Control을 확장하고 동일한 액세스 키가 리소스 파일에 저장되어 있는 두 개 이상의 최상위 컨트롤을 포함합니다.
규칙 설명
액셀러레이터 키라고도 하는 액세스 키를 사용하면 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);
}
}
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기