2008-09-07 5 views
19

TabControl 내에 중첩 된 Textbox이 있다고 가정 해보십시오.Winforms C# - TabPage의 첫 번째 하위 컨트롤에 포커스 설정

양식이로드되면 Textbox에 초점을 맞추고 싶습니다. 기본적으로 포커스는 TabControl으로 설정되어 있습니다.

이벤트에서 단순히 textbox1.focus()을 호출하면 작동하지 않는 것 같습니다.

private void frmMainLoad(object sender, EventArgs e) 
{ 
    foreach (TabPage tab in this.tabControl1.TabPages) 
    { 
     this.tabControl1.SelectedTab = tab; 
    } 
} 

내 질문은 :이 작업을 수행하는 더 우아한 방법은

있습니까

나는 다음을 수행하여 초점을 맞출 수 있었다? 나는 그 일에 대한 답이 무엇인지 전혀 모르겠어요 왜 ...

private void frmMainLoad(object sender, EventArgs e) 
{ 
    ActiveControl = textBox1; 
} 

더 나은 질문은 그러나 다음과 같습니다

답변

45

다음은 솔루션입니다.

편집 : 양식과 TabControl이 모두 컨테이너라는 사실과 관련이 있다고 생각되지만 확실하지 않습니다.

14

Form_Shown() 이벤트에 넣어보세요. 컨테이너에 있기 때문에 Form_Load 또는 Form() 생성자를 사용하더라도 작동하지 않습니다.

+2

"덮어 쓴". 표시된 컨트롤에 포커스를 맞추면 다른 컨트롤에 초점을 맞춤으로써 전화를 "덮어 쓸"것이 없습니다. – Marek

1

이 코드에 사용자 컨트롤의 Control.Select()를 추가하기 만하면됩니다. 나는 오류가있을 때 유효성 검사 중에 컨트롤에 초점을 맞추기 위해 이것을 사용했다.

private void ShowControlTab(Control ControlToShow) 
    { 
     if (!TabSelected) 
     { 
      if (ControlToShow.Parent != null) 
      { 
       if (ControlToShow.Parent.GetType() == typeof(TabPage)) 
       { 
        TabPage Tab = (TabPage)ControlToShow.Parent; 
        if (WOTabs.TabPages.Contains(Tab)) 
        { 
         WOTabs.SelectedTab = Tab; 
         TabSelected = true; 
         return; 
        } 
       } 

       ShowControlTab(ControlToShow.Parent); 
      } 
     } 
    } 
4

봅니다 textbox1.Select() 대신 textbox1.Focus() 사용할 수 있습니다. 이것은 나를 몇 번 도왔습니다.

1

다른 사용자 컨트롤 내에 사용자 컨트롤이 있습니다. textbox1.Select()는 나를 위해 일했지만 textbox1.Focus()가 작동하지 않았습니다.

Tabstop을 false, textbox1.Focus(), TabStop true로 설정할 수도 있습니다.

0
private void ChildForm1_Load(object sender, EventArgs e) 
     { 
      ActiveControl = txt_fname; 

     } 

나는 그것이 승리의 탭 컨트롤 또는에서 잘 작동이 코드를 사용 dotnetbar 인 Supertab CONTRL

부하 후 컨트롤 탭 순서와 포커스 제어가에 따라 다시 초점을 맞추고 있기 때문에 그것은로드에서 작동하지 않습니다