2016-12-19 3 views
1

私のアプリケーションには2つの異なるリストがあります。それぞれコンボボックスとリストボックス用です。私はコントロールの中に項目を挿入するために、再利用可能なコードの下で使用しています。今、私は見たように2つの異なる機能を使用しています。コンボボックスとリストボックスの一般的なクラスがあるので、私は自分の仕事を単一の関数で行うことができますか?コードを減らすためのコンボボックスとリストボックスの一般的なクラスの検索

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

方法が同じである場合は、動的なコントロールを使用することができます:Itemsプロパティが定義されている場所、私が思い付くことができる最高のは、実行時の型チェックのビットを必要とするので、残念ながら、それは、ありません。

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由来します。

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); 
     } 
    } 
} 
関連する問題