2014-02-06 33 views
1

Form獲取來自組合框的文本中選定的選項卡

在所有這些選項卡,我有不同的功能爲字符串的組合框。我希望在每個不同選項卡的組合框中選擇一個項目時,將預覽下的文本(它是一個richtextbox,其中包含「Nothing is selected。」作爲默認字符串)。任何想法我可以做到這一點?

+1

請告訴我們你的代碼,你想在RichTextBox顯示僅從一個組合的字符串或你想你已經嘗試 – ElectricRouge

+1

什麼連接來自不同組合的文本? – 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; 
} 

但是,如果你改變你的連擊ComboBoxStyle.DropDownList的DropDownStyle那麼你可以使用SelectedIndexChanged事件即會僅當用戶更改使用DropDown List選擇的項目時才被觸發。

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的內容設置爲當前標籤頁組合的一個,你需要處理您的TabControl的TabChanged事件

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 
    } 
} 

或者,如果您的組合框都有一個共同的他們的名字的最初部分

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

是的,我希望沿着這些路線。我會試試看,並報告最終結果:) 哦......所以我將無法通過沒有開關/案件畢竟:/我希望有某種方式來動態獲取當前選擇組合框索引的值並將其作爲rtb的文本。 – Schadenfreude

+0

是否可以訪問(在SelectedIndex已更改)TabControl-> SelectedTab-> Child(ComboBox).SelectedIndex.Value(或沿着這些行的東西)? – Schadenfreude

+0

我能夠避免最後一部分(與開關/案例之一)。我將所有組合框都放在了它們的'SelectedIndexChanged事件'中,並設置了'rtb.Text = cbo.SelectedItem.ToString();':)感謝您的幫助! – Schadenfreude