2012-01-13 4 views
0

확인란에 바로 가기 키를 추가하고 싶습니다. 확인란에는 텍스트가 없습니다. 레이블이 있고 확인란이 있습니다. 레이블에 ex의 바로 가기 키가 있습니다. & 표시. 그래서 레이블에는 바로 가기 키로 V가 있습니다. 누군가 Alt + V를 누르면 Chechbox가 선택된 상태에서 선택되지 않은 상태로 변경되고 반대 방향으로 변경되어야합니다.텍스트없이 체크 박스에 바로 가기 키를 추가하는 방법

+1

어떤 프레임 워크를 사용하고 있습니까 : wpf, windows forms, gtk #, asp.net, ...? – madd0

+0

당신은 이것을 시도 했습니까? –

+0

windows forms framework –

답변

2

레이블 컨트롤은 키보드 니모닉과 관련하여 특별합니다. 레이블에 초점을 맞출 수 없기 때문에 키보드 니모 닉을 사용하여 레이블에 포커스를 설정할 때마다 레이블은 탭 순서의 바로 다음 컨트롤에 초점을 설정합니다.

이 기능은 텍스트 상자와 콤보 상자에 사용하기위한 것으로, 확인란 및 옵션 단추 컨트롤과 달리 레이블을 표시하는 기본 제공 기능이 없습니다. 이러한 컨트롤에 대한 니모 닉을 설정하려면 라벨을 옆에 배치하고 니모닉을 설정하고 탭 순서의 텍스트 상자 바로 앞에 오도록합니다. 이렇게하면 사용자가 레이블에 대해 키보드 니모닉을 활성화하면 자동으로 포커스가 텍스트 상자 컨트롤로 설정됩니다. 당신은 Windows에서 사방 본 적이 :

          example of textbox with a label used as the mnemonic

글쎄, 당신은 체크 박스 컨트롤과 정확히 같은 일을 할 수 만약 당신이 (해야 난 정말 모르겠어요하지만 왜 네가하고 싶어하는지). 니모닉 레이블 (&Visible)을 설정 한 다음 작업 할 확인란 옆에 레이블을 배치합니다. Use the TabIndex configuration options in the Visual Studio IDE 레이블에 탭 인덱스 n이있는 경우 확인란 컨트롤의 탭 인덱스는 n + 1입니다.

ProcessCmdKey 또는 다른 것을 무시할 필요가 없습니다.

+0

ToolStripLabels 및 ToolStripCheckboxes에 대해 작동하지 않습니다. –

1

다음 코드 부분을 참조하면 확인할 수 있습니다.

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
     { 
      // look for the expected key 
      if (keyData == Keys.Alt && keyData == Keys.V) 
      { 
       checkBox1.Checked = true; 
       return true; 
      } 
      else 
      { 
       checkBox1.Checked = false; 
       return false; 
      } 
     } 
관련 문제