C # Winforms - Предотвращение кражи фокуса элемента управления при программном добавлении - PullRequest
1 голос
/ 27 января 2010

У меня немного странный вопрос. Моя ситуация выглядит следующим образом:

У меня есть форма, она содержит несколько пользовательских элементов управления, которые в свою очередь содержат либо другие пользовательские элементы управления, либо другие базовые элементы управления, такие как TextBox, RichTextBox и т. Д.

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

Проблема в том, что эти элементы управления крадут фокус у моего элемента управления, когда они создаются и добавляются в форму / другие элементы управления.

Есть ли способ предотвратить потерю фокуса моим контролем, пока это происходит?

Ответы [ 2 ]

2 голосов
/ 27 января 2010

Возможно, вам следует включить в логику сначала индексы вкладок, а когда вы добавляете элемент управления, установите индекс вкладок на индекс последней вкладки + 1, ваша работа будет проще, если вы сначала установите порядок вкладок на элементы управления и установите константу на последний индекс вкладки во время разработки, см. здесь:

private const int LAST_TAB_INDEX = 5; // an Example
private int lastTabIndex = LAST_TAB_INDEX; 

private void AddControl(){
   // Set up your control
   Control ctl = new Control();
   // ....
   ctl.TabIndex = lastTabIndex;   
   this.Add(ctl);
   this.lastTabIndex++;
}

Из примера видно, как увеличивается индекс табуляции, таким образом, это предотвратит управление от кражи фокуса ...

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0 голосов
/ 27 января 2010

Органы управления не могут принимать (красть) фокус, если они не видны и не включены. Вы пытались создать элементы управления с одним или обоими из них как ложными, а затем включить их при необходимости?

...