2014-01-27 2 views
0

Я создал пользовательский элемент управления в окнах C#, где говорится, что chatWindow имеет текстовое поле с бутонами. Я поставил этот пользовательский контроль четыре раза на MainForm, скажем, uc1, uc2, uc3, uc4. На MainForm у меня есть и другие элементы управления. Теперь я хочу, чтобы, когда пользователь нажимал TAB, следует установить фокус текстового поля uc1. Нажав вкладку второй фокус времени в текстовом поле uc2, необходимо установить, а также для третьей и четвертой вкладки.установить фокус на текстовое поле в пользовательском управлении C#

Я попытался установить TabIndex из этих элементов управления пользователя, но не смог добиться успеха. Я не знаю, как получить свойство текстового поля пользовательского элемента управления в MainForm.

+0

Вы хотите просто войти в пользовательский контроль, игнорируя другие элементы управления в своей форме? –

+0

да, я хочу это –

+0

Почему бы не рассмотреть настройку tabIndex? – User2012384

ответ

3

Вы можете определить переменную для хранения вкладок количество прессы, определить его внутри класса формы в уровне класса:

int count = 0; 

Тогда в Form'sKeyDown случае необходимо выполнить следующие действия:

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

@ Задержите, затем попытайтесь использовать метод Focus Text Text, как указано в предыдущем комментарии. Возможно, ваш пользовательский элемент управления имеет свойство ActiveControl, пытающееся установить это. –

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

Попробуйте вместо этого, Просто, В режиме проектирования из свойства Explorer установите значение tabIndex с uc1 на 0, uc2 на 1, uc3 на 2, uc4 на 3 и установите для них свойство tabstop true. Надеюсь, этого достаточно. Спасибо.

Смежные вопросы