2016-07-08 7 views
1

私は(それはImageComboBoxから継承 - インターネット上で発見されたコンポーネントを)DriveComboBox ためのC#で新しいコンポーネントを書いて、コード例を参照してください。自動コード生成C#ユーザーコントロール

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

この部分のコードはに追加されますドライブを制御し、この制御の後にフォームにドラッグすると、フォームのコードの設計者にアイテムが追加されます。 問題は、プログラムが実行されると、上記のコードで項目が追加され、次にデザイナーコードがそれらを再度追加するため、ダブルアイテムになります。

問題は、アイテムをコントロールに追加する場所、またはデザイナーがアイテムを再び追加できないようにする方法です。

+0

? – DavidG

+0

@DavidGこれは、コンボボックスのドロップダウンリストに画像を表示するための追加サポート(編集ボックス(テキスト))として が追加された、拡張された所有者が描いたComboBoxです。 – user2102327

+0

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

答えて

0

私は同じ問題を抱えていました。ビジュアルスタジオのデザイナーは、ランタイムコードをデザインタイムコードとして使用できます。 私は何が起こっているかを完全に理解しないが、私はこの方法で問題を回避するために管理しました:

私はこのような使用
protected bool IsInDesignMode 
{ 
    get { return DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime; } 
} 

: `ImageComboBox`は何

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

ありがとう、それは働いた:) – user2102327

関連する問題