2014-01-27 2 views
0

C# 윈도우 폼에서 chatWindow라고하는 사용자 컨트롤을 만들었고 버튼이있는 텍스트 상자가 있습니다. MainForm에서이 사용자 컨트롤을 네 번 배치했습니다. uc1, uc2, uc3, uc4입니다. MainForm에는 다른 컨트롤도 있습니다. 이제는 사용자가 Tab 키를 누를 때 uc1의 텍스트 상자의 포커스를 설정해야합니다. uc2의 텍스트 상자의 두 번째 탭 포커스를 설정해야하며 3 번째 및 4 번째 탭에도 설정해야합니다.사용자 컨트롤의 텍스트 상자에 포커스를 설정합니다. C#

이 사용자 컨트롤의 TabIndex를 설정하려고했지만 성공하지 못했습니다. MainForm에서 사용자 컨트롤의 textbox 속성을 가져 오는 방법을 모릅니다.

당신은 탭을 눌러 수를 저장하는 변수를 정의 클래스 레벨에서 Form 클래스의 내부를 정의 할 수 있습니다
+0

폼의 다른 컨트롤을 무시하고 usercontrols로 탭을 옮기고 싶습니까? –

+0

예 원하는 항목 –

+0

tabIndex 설정을 고려하지 않으시겠습니까? – User2012384

답변

3

다음 Form'sKeyDown 경우에 그런

int count = 0; 

는 다음을 수행하십시오

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
     if (e.KeyCode == Keys.Tab) 
     { 
      switch (count) 
      { 
       case 0: 
        this.ActiveControl = uc1TextBox; 
        count++; 
        break; 
       case 1: 
        this.ActiveControl = uc2TextBox; 
        count++ 
        break; 

       // and so on... 
      } 
     } 
} 
+0

uc1TextBox.Focus()도 사용할 수 있습니다! – Swanand

+0

uc1TextBox는 사용자 컨트롤에 있지만 MainForm에 있습니다. 어떻게이 부동산을 얻을 수 있습니까? –

+0

@ZaheerMehmood는 이전 comment.or 어쩌면 귀하의 사용자 정의 컨트롤에서 ActiveControl 속성이 설정하려고 시도하고 언급 한 것처럼 TextBox의 Focus 메서드를 사용하려고합니다. –

0

처음 탭 순서 설정 및 선택한 모든 컨트롤의 TabStop 속성이 true로 설정되어 있는지 확인하십시오.

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
    if (e.KeyCode == Keys.Enter) 
    { 
      e.Handled = true; 
      this.ProcessTabKey(true); 
    } 

    } 
+0

uc1TextBox는 사용자 컨트롤에 있지만 MainForm에 있습니다. 어떻게이 부동산을 얻을 수 있습니까? –

+0

MianForm에서 사용자 정의 컨트롤의 인스턴스가 있지만 uc1.textbox1.setFocus() 등의 작업을 수행 할 수 없습니다. –

0

간단히 말해서 디자인 모드에서 속성 탐색기에서 tabIndex 값을 0, uc2를 1, uc3을 2, uc4를 3으로 설정하고 tabstop 속성을 true로 설정합니다. 희망이 있으면 충분합니다. 감사합니다. .

관련 문제