2014-10-28 3 views
0

Tabbar 컨트롤이 있고 첫 번째 탭 안에 텍스트 상자가 있습니다. 내가 원하는 것은 첫 번째 탭을 선택하면 텍스트 상자가 자동으로 초점을 맞 춥니 다.tabbar 컨트롤 내에서 winform 컨트롤 가져 오기

내가 선택한 tabbar selected index changed 이벤트에 액세스 할 수 있지만 자동 포커스가 적용될 텍스트 상자에 액세스 할 수 없습니다. 어떤 아이디어? 나는이 일을하고있는 TabBar을 추가하는 동안

는 :

  capture = new CaptureForm(photoGrapherName); 
      capture.TopLevel = false; 
      capture.Visible = true; 
      capture.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
      capture.Dock = DockStyle.Fill; 
      tabControl1.TabPages[0].Controls.Add(capture); capture = new CaptureForm(photoGrapherName); 
      capture.TopLevel = false; 
      capture.Visible = true; 
      capture.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
      capture.Dock = DockStyle.Fill; 
      tabControl1.TabPages[0].Controls.Add(capture); 

을 그리고 이것은 내 탭 변경 이벤트입니다 :

private void TabControl1_SelectedIndexChanged(Object sender, EventArgs e) 
    { 
     switch(tabControl1.SelectedIndex) 
     { 
      case 0: 
       //I want to access the textbox from here. 
       break; 
      case 1: 

       break; 
     } 

    } 

CaptureForm가 'ClientCode'라는 이름의 텍스트 상자를 가지고,이 텍스트 상자를 만들고 싶어 모든 사람이 캡처 탭을 선택할 때 포커스를 맞 춥니 다.

+0

이벤트를 탭바 (onClick과 같은 것)에 등록하고 어떤 것을 클릭했는지 체크해야합니다. 올바른 것이면 텍스트 상자에 초점을 맞 춥니 다 – Vajura

+0

'OnClick' 코드를 주실 수 있습니까? – Alireza

+0

@vajura 내 편집을 참조하십시오. – Rashad

답변

2

SelectedIndexChanged 이벤트를 사용해 보셨습니까? 당신이 약 을 TabControl 이야기 경우 modfied으로 우리는

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     switch ((sender as TabControl).SelectedIndex) 
     { 
      case 0: 
       //nothing to do.. or you can, if you want.. :) 
       break; 
      case 1:      
       tbFName.Focus(); 
       break; 
     } 
    } 

UPDATE

..이 사용 스위치의 경우의 도움으로 이벤트의 SelectedIndexChanged 할 수있는 당신이 추가 알고있어 TabPage로 동적으로 제어하므로 아래 스 니펫을 사용하여 동적으로 추가 된 TextBox를 가져옵니다.

public Form1() 
    { 
     InitializeComponent(); 
     TextBox tb = new TextBox(); 
     tb.Name = "dynamic"; 
     tb.Text = "Text dynamic"; 
     tabControl1.TabPages[1].Controls.Add(tb); 
    } 

    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     TabControl tc = (sender as TabControl); 
     switch (tc.SelectedIndex) 
     { 
      case 0: 

       break; 
      case 1: 
       Control[] temp = tc.TabPages[1].Controls.Find("dynamic", true); 
       if (temp.Length == 1) 
       { 
        (temp[0] as TextBox).Focus(); 
       } 
       break; 
     } 
    } 

희망이 있으시길 바랍니다 ..!

+0

이렇게 할 것입니다. – Alireza