2014-02-06 2 views
1

FormПолучить текст из выпадающего списка в выбранной вкладке

Во всех этих вкладках, у меня есть выпадающий с различными функциями как строки. Я хочу текст в разделе «Предварительный просмотр» (это richtextbox с «Nothing is selected.» В качестве строки по умолчанию) для изменения, когда я выбираю элемент в каждой из списков вкладок разных вкладок. Любая идея, как я могу это сделать?

+1

Пожалуйста, покажите нам свой код и то, что вы пытались – ElectricRouge

+1

хотите ли вы RichTextBox, чтобы показать строку из только одного комбо, или вы хотите объединить текст из разных комбо? – Steve

+0

Используйте события '_onChanged' в выпадающих списках и изменяйте текст в выбранном элементе при запуске события. – Max

ответ

0

Вы можете установить каждый TextChanged событие всех ваших выпадающий список в тот же обработчик событий

comboBox1.TextChanged += CommonComboTextChanged; 
comboBox2.TextChanged += CommonComboTextChanged; 
comboBox3.TextChanged += CommonComboTextChanged; 
comboBox4.TextChanged += CommonComboTextChanged; 


private void CommonComboTextChanged(object sender, EventArgs e) 
{ 
    ComboBox cbo = sender as ComboBox; 
    richTextBox.Text = cbo.Text; 
} 

Однако, если вы измените DropDownStyle ваших комбо в ComboBoxStyle.DropDownList, то вы можете использовать событие SelectedIndexChanged, который будет запускаться только тогда, когда ваш пользователь меняет элемент, выбранный с помощью списка DropDown.

comboBox1.SelectedIndexChanged += CommonComboIndexChanged; 
comboBox2.SelectedIndexChanged += CommonComboIndexChanged;; 
comboBox3.SelectedIndexChanged += CommonComboIndexChanged;; 
comboBox4.SelectedIndexChanged += CommonComboIndexChanged;; 


private void CommonComboIndexChanged;(object sender, EventArgs e) 
{ 
    ComboBox cbo = sender as ComboBox; 
    richTextBox.Text = cbo.Text; 
} 

Наконец, чтобы установить содержание RTB в одной из комбо в текущей закладке необходимо обработать событие TabChanged вашего TabControl

private void tabControl1_Selected(object sender, TabControlEventArgs e) 
{ 
    switch(e.TabPageIndex) 
    { 
     case 0: 
      richTextBox.Text = comboBox1.Text;    
      break; 
     // so on for the other page and combos 
    } 
} 

Или, если ваш ComboBoxes поделиться общим начальная часть их имен

private void tabControl1_Selected(object sender, TabControlEventArgs e) 
{ 
    var result = e.TabPage.Controls.OfType<ComboBox>() 
       .Where(x => x.Name.StartsWith("cboFunction")); 
    if(result != null) 
    { 
     ComboBox b = result.ToList().First(); 
     richTextBox.Text = comboBox1.Text;    
    } 
} 
+0

Да, я надеялся на что-то подобное. Я дам ему попробовать и сообщить с возможными результатами :) Ох ... поэтому я не смогу пройти без переключения/случая в конце концов:/Я надеялся каким-то образом динамически получить в настоящее время выбранного значения индекса combobox и поместить его в текст rtb. – Schadenfreude

+0

Возможно ли получить доступ (в SelectedIndex Changed) TabControl-> SelectedTab-> Ребенок (ComboBox) .SelectedIndex.Value (или что-то в этом роде)? – Schadenfreude

+0

Мне удалось избежать последней части (той, у которой есть переключатель/футляр). Я дал всем comboboxes один и тот же обработчик событий для своего события SelectedIndexChanged и установил 'rtb.Text = cbo.SelectedItem.ToString();' :) Спасибо за помощь! – Schadenfreude

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