2016-12-19 27 views
1

我在我的應用程序中有兩個不同的列表。每個用於組合框和列表框。我正在使用下面的可重複使用的代碼插入控件中的項目。現在,我使用了兩種不同的功能。是否有組合框和列表框的一般類,以便我可以在單個函數中完成我的工作?尋求組合框和列表框的一般類以減少代碼

public void AddItemsComboBox(ComboBox combobox, List<string> list) 
    { 
     foreach (string s in list) 
     { 
      if (!combobox.Items.Contains(s)) 
      { 
       combobox.Items.Add(s); 
      } 
     } 
    } 

    public void AddItemsListBox(ListBox listbox, List<string> list) 
    { 
     foreach (string s in list) 
     { 
      if (!listbox.Items.Contains(s)) 
      { 
       listbox.Items.Add(s); 
      } 
     } 
    } 
+0

你有什麼錯誤? –

+0

@MANISHKUMARCHOUDHARY我沒有得到任何錯誤..我只是想減少我的代碼在一個單一的功能 –

回答

1

您可以使用動態控件如果方法是一樣的。

public void AddItems(dynamic control, List<string> list) 
{ 
    foreach (string s in list) 
     if (!control.Items.Contains(s)) 
      control.Items.Add(s); 
} 
+0

謝謝你的兄弟 –

0

ListBoxComboBox都從一個共同的祖先,即ListControl派生。不幸的是,這不是Items屬性被定義在哪裏,所以最好我能拿出需要一些運行時類型檢查:

public void AddItems(ListControl lb, List<string> list) 
{ 
    ListBox listBox = lb as ListBox; 
    ComboBox comboBox = lb as ComboBox; 
    foreach (string s in list) 
    { 
     if (listBox != null && !listBox.Items.Contains(s)) 
     { 
      listBox.Items.Add(s); 
     } 
     else if (comboBox != null && !comboBox.Items.Contains(s)) 
     { 
      comboBox.Items.Add(s); 
     } 
    } 
}