2016-07-08 75 views
1

我在C#寫了一個新的組件,用於DriveComboBox (從ImageComboBox繼承 - 組件,它是在互聯網上找到),見代碼示例:自動代碼生成C#用戶控制

public class DriveComboBox : ImageComboBox.ImageComboBox 
{ 
    public DriveComboBox() 
     : base() 
    { 
     foreach (ImageComboBoxItem item in allImageComboBoxItems) 
     { 
      this.Items.Add(item);     
     } 
    } 
} 

這部分代碼添加到控制驅動器並將此控件拖入表單後,將項目添加到表單代碼的設計器中。 問題是,一旦程序運行,項目就會被上面的代碼添加,然後設計器代碼再次添加它們,所以我們最終得到了雙重項目。

問題是,添加項目的地方應該放在控件的哪個位置,或者如何防止設計者再次添加項目?

+0

什麼是'ImageComboBox'? – DavidG

+0

@DavidG這是一個擴展的所有者繪製的組合框,它具有添加的支持,可以顯示組合框下拉框中的圖像以及作爲編輯(文本)框的 。 – user2102327

+0

http://www.codeproject.com/KB/combobox/ImageComboBoxControl.aspx?display=打印 – user2102327

回答

0

我有同樣的問題,它似乎是「視覺??」 Visual Studio的設計師可以使用運行時代碼作爲設計時代碼。 我不明白完整是怎麼回事,但我並設法避免使用此方法的問題:

protected bool IsInDesignMode 
{ 
    get { return DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime; } 
} 

,我用這樣的:

public DriveComboBox() 
    : base() 
{ 
    if (IsInDesignMode == false) 
    { 
     foreach (ImageComboBoxItem item in allImageComboBoxItems) 
     { 
      this.Items.Add(item);     
     } 
    } 
} 
+0

謝謝,它工作:) – user2102327