2013-02-22 3 views
5

У меня есть поле со списком, которое мне нужно отразить на другой вкладке в приложении на основе Winforms на C#.Изменение текста выпадающего списка на другой вкладке

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

Если я сначала нажму каждую вкладку, тогда все будет работать так, как ожидалось.

Теперь я помещаю это в ту или иную форму отсутствия инициализации, которая происходит в первую очередь. Поэтому я попытался выбрать каждую вкладку в своем конструкторе.

tabControlDataSource.SelectedIndex = 0; 
tabControlDataSource.SelectedIndex = 1; 
// etc 

Но это не сработает.

Я также пробовал звонить tabControlDataSource.SelectTab(1) и все еще не работает.

Кто-нибудь знает, как я могу заставить вкладку «инициализировать»?

+0

I когда-то была аналогичная проблема, которую я решил сделать 'tabControl.SelectedTab = tabControl.TabPages [" tabName "]'. Я не вижу, как это отличается от 'tabControlDataSource.SelectTab (1)' хотя. – Otiel

ответ

3

Хорошо, обычно я отправляю вопрос после боев в течение часа и вскоре после этого нахожу решение.

TabPages лениво инициализируется. Таким образом, они не полностью инициализируются, пока они не станут видимыми в первый раз.

Так я добавил этот код на конструктор:

 tabControlDataSource.TabPages[0].Show(); 
     tabControlDataSource.TabPages[1].Show(); 
     tabControlDataSource.TabPages[2].Show(); 

, но это не работает :(

Мне пришло в голову, однако, что конструктор не может быть лучшим местом Так. Я создал обработчик события для Shown следующим образом:

private void MainForm_Shown(object sender, EventArgs e) 
    { 
     tabControlDataSource.TabPages[0].Show(); 
     tabControlDataSource.TabPages[1].Show(); 
     tabControlDataSource.TabPages[2].Show(); 
    } 

а теперь все работает

2

Возможно, вы также можете использовать «ленивую» синхронизацию (инициализацию) в этом случае. Быстрые надежные идеи: таймер опроса для обновления содержимого (который будет обновлять его, как только вы видите вкладку), нет зависимости от второй вкладки (нет Измененных событий для combobox для обновления содержимого второй вкладки, используйте исходную выпадающую скобку с первой вкладки или, скорее, ее содержимое в для обоего, доступного класса ComboBoxes и т.д.), «переинициализация», когда вкладка становится видимой (в какой момент вы INIT свой второй выпадающий) ...

не может быть часа, никак = D

+1

Да, это был час, я гораздо больше привык к доброй старой Win32, где у меня нет чего-то, отвлеченного от меня;) – Goz

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

  • Нет связанных вопросов^_^