2012-01-06 3 views
0

기본값은 위쪽 및 왼쪽 키가 이전 tabstop으로 이동하고 아래/오른쪽 키가 다음 tabstop으로 이동하는 것 같습니다. 하나의 버튼이있는 TableLayoutPanel이 있습니다. 화살표 키가 셀의 단추를 TabLayoutPanel의 해당 방향으로 포커스를 이동하는 대신 탭 스톱을 따르는 것보다 쉬운 방법이 있습니까?어떻게하면 화살표 키를 사용하여 WinForms TableLayoutPanel에서 포커스를 옮길 수 있습니까?

답변

5

예, 문제가 없습니다. 나만의 TableLayoutPanel 재정의를 만들고 커서 키를 처리하여 원하는 것을 얻을 수 있습니다. 프로젝트에 새 클래스를 추가하고 아래 표시된 코드를 붙여 넣습니다. 엮다. 새 패널을 도구 상자의 맨 위에서 양식으로 가져와 이전 패널을 바꿉니다.

using System; 
using System.Windows.Forms; 

class MyLayoutPanel : TableLayoutPanel { 
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { 
     var ctl = this.FindForm().ActiveControl; 
     if (ctl.Parent == this) { 
      int col = this.GetColumn(ctl); 
      int row = this.GetRow(ctl); 
      if (keyData == Keys.Left && col > 0) { 
       var newctl = this.GetControlFromPosition(col - 1, row); 
       if (newctl != null) newctl.Focus(); 
       return true; 
      } 
      // etc.. 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    } 
} 
+0

니스. 나는 (지금 삭제 된) 나의 대답 안에 문제의 본질을 깨닫지 못해 죄송합니다. –

관련 문제