2010-06-04 2 views

답변

3

양식에 처음으로 '취소'버튼과 같이 비교적 무해한 곳에 초점을 두어야합니다.

나는 testet을 가지고있다.

private void Form1_Shown(object sender, EventArgs e) 
    { 
     textBox1.TabStop = false; 
     textBox1.Focus(); 
     textBox1.Left = -300; 
    } 

이렇게하면 보이는 영역 밖으로 이동하여 포커스가있는 텍스트 상자를 "숨 깁니다". 이 해킹 방법으로 텍스트 상자에 초점을 맞출 수 있습니다.

[편집] 이것은 (분명히) 당신의 양식에 다른 용도로 사용되지 않는 textBox1이라는 텍스트 상자가 있어야합니다.

0

아니요. 해결 방법이 있습니다. 양식 (예 : 텍스트 상자)에 숨김 된 컨트롤을 추가하고 Form_Shown 또는 Form_Load 이벤트에서

을 입력하십시오.

+0

그래,하지만 포커스가 때로는 볼 수없는 곳으로 점차 이동하기 때문에 탭 키로 많이 돌아 다니는 사용자에게는 약간 혼란 스러울 수 있음을 알아 두십시오. 숨겨진 컨트롤의 tabindex를 올바르게 설정했는지 확인하십시오. –

+0

분명히 TextBox1.TabStop = false를 설정하는 것이 좋습니다. – vaitrafra

+0

이 해결 방법을 시도했지만 작동하지 않는 것 같습니다. 포커스가 taborder의 첫 번째 보이는 컨트롤로 되돌아가는 것 같습니다. – LaustN

0

각 컨트롤에 대해 TabStop 속성을 false로 설정할 수 있지만 컨트롤을 탭으로 이동할 수는 없습니다. 그것은 좋은 해결책 일 수도 있고 아닐 수도 있지만 사용자가 클릭 할 때까지 입력을받지 못하게해야합니다.

1

MyInvisibleLabel.Select();_Load 또는 가능한 경우 종료/취소/닫기 버튼에 초점을 맞출 수 있습니다.

3

시도해보십시오. Panel 컨트롤을 양식에 추가하고 기본 설정을 유지하십시오. 패널은 어떤 크기로도 배치 할 수 있으며 어느 위치 에나 배치 할 수 있습니다. 이 회원은 m_panel이라고 부를 것입니다. 생성자에서 양식의 ActiveControl 속성을 m_panel으로 설정하십시오. 마지막으로 패널의 TabStop 속성이 false (기본적으로 설정 됨)으로 설정되어 있는지 확인하십시오.

폼이로드되면 m_panel이 포커스를 얻습니다. 그러나 패널에는 테두리가 없으며 양식 배경과 동일한 색을 사용하기 때문에 존재 여부가 표시되지 않으므로 원하는대로 양식 자체에 포커스가 있다고 효과적으로 말할 수 있습니다. 사용자가 처음 Tab을 누르거나 컨트롤에서 클릭하면 패널에 방정식이 없어집니다 (TabStopfalse). 정상적으로 작동합니다.

참고 : 오히려 자신에게 맞는 어떤 Panel,보다 빈 Label를 사용할 수 있습니다. 기존 레이블 중 하나를 사용할 수도 있습니다. 관심 컨트롤을 지정하려면 ActiveControl을 사용하거나 자동으로 포커스를 얻지 않으므로 Focus을 호출하여 명시 적으로 포커스를 지정해야합니다.

0

vaitrafra의 대답은 충분하지만 양식에 레이블이있는 경우 초점을 설정할 수도 있습니다. 허용 된 대답 here은 양식의 모든 컨트롤에 포커스가없는 것을 보장 할 수없는 이유에 대해 좀 더 자세한 정보를 제공합니다.

+0

라벨 작업에 관해 좋은 점도 있습니다. – Charlie

0

페이지를로드하는 동안 레이블을 포커스로 설정하면 작동하지 않습니다.

텍스트 상자 대신 초점을 지정하려는 레이블로 페이지의 활성 컨트롤을 설정해야합니다.

예는 : 가장 간단한 해결책은

0

입니다 this.ActiveControl = lbltest; :

protected override void OnShown(EventArgs e) 
{ 
    base.OnShown(e); 

    ActiveControl = null; 
} 

또한, 모든 컨트롤을 채우기 위해 도킹 패널 내부에 있다면, 당신은 패널 집중할 수 :

protected override void OnShown(EventArgs e) 
{ 
    base.OnShown(e); 

    pnlMain.Focus(); 
} 

을 두 방법 중 하나를 사용하면 탭 키를 눌러 첫 번째 컨트롤을 탭 순서대로 맞 춥니 다.

관련 문제