2009-08-30 7 views
1

私の質問はちょっとばかげていますが、私は結果のない多くのことを試しました。コンボボックス(C#)のリスト内容の特定のフィールドを表示する

私のメインフォームにはComboBoxがあり、そのデータソースをFiltersクラスで宣言されたpublic readonly List PriceChangesリストにポイントしたいと思います。問題はありませんが、[説明]フィールドを表示します。

「説明」文字列をDisplayMember属性に割り当てようとしましたが、成功しませんでした。 My ComboBoxは各エントリの "BusinessLogic.PriceChange"のみを表示します。BusinessLogicは自分の名前空間の名前で、PriceChangeはクラスです。

何か助けていただきありがとうございます。

よろしく

Listオブジェクトを宣言します

public mainFrm() 
    { 
     InitializeComponent(); 

     prodFilter = new Filters(); 
     cbPriceChanges.DataSource = prodFilter.PriceChanges; 
     cbPriceChanges.DisplayMember = "Description" 
    } 

は、コードの一部である私のメインフォームのコードの一部です

public enum PriceChangeTypes 
{ 
    No_Change, 
    Increased, 
    Decreased, 
    All 
} 

public class PriceChange 
{ 
    public String Description; 
    public readonly PriceChangeTypes Type; 

    public delegate bool ComparisonFuntionDelegate(Decimal a); 
    public readonly ComparisonFuntionDelegate ComparisonFunction; 

    public PriceChange(String Description, PriceChangeTypes type , ComparisonFuntionDelegate CompFunc) 
    { 
     this.Description = Description; 
     Type = type; 
     ComparisonFunction = CompFunc; 
    } 
} 

public class Filters 
{ 

    public readonly List<PriceChange> PriceChanges = null; 

    public Filters() 
    { 
     PriceChanges = new List<PriceChange>(); 

     PriceChanges.Add(new PriceChange("No Change", PriceChangeTypes.No_Change, PriceChange => PriceChange == 0)); 
     PriceChanges.Add(new PriceChange("Increased", PriceChangeTypes.Increased, PriceChange => PriceChange > 0)); 
     PriceChanges.Add(new PriceChange("Decreased", PriceChangeTypes.Decreased, PriceChange => PriceChange < 0)); 
     PriceChanges.Add(new PriceChange("All", PriceChangeTypes.All, a => true)); 
    } 
} 
+1

説明、タイプ、ComparisonFuntionDelegateあるToStringメソッドのデフォルト値を、取得している、とComparisonFunctionは実際にプライベートであるか、プロパティに作られるべきです。 –

答えて

1

は、あなたが「説明」を作り試してみましたプロパティ?それは、リストが(ほとんどの場合そうであるように)リフレクションを通してフィールドを取得しようとする場合には、多く変わるでしょう。

public class PriceChange { 
    public string Description{ 
     get; 
     set; 
    } 
    // ... 
} 
+0

完璧です、それは、私はこの事が内部的にどのように振る舞うかについて私のスキルを深める必要があると思います。乾杯は – Andres

+0

喜んでそれは助け:) –

0

あなたのクラスにこれを追加してみてください:

public override string ToString() 
     { 
      return Description; 
     } 

現在あなただけのオブジェクトの名前空間とクラス

関連する問題