2016-04-20 48 views
-4

をintに文字列から暗黙的に変換することはできません、私は、値のドロップダウンを取得するために列挙型を使用しています。私はエラーを取得しています:暗黙的に型 '文字列'を 'int'に変換できません。は、C#では

私は、二重引用符を削除したが、まだそれは同じエラーを示します。何が間違っていますか?

+0

あなたはどこからその構文を取得しましたか? –

+0

文字列値で列挙できない定数を使用 – Backs

+0

c#では(Javaとは異なり)列挙型の値を文字列にすることができます。列挙型の値は数値でなければなりません(int16、int32) –

答えて

0

列挙型に文字列を表示しようとしているため、列挙型を表示しようとしているため、列挙型を作成する必要があります。

using System.Reflection; 

    public static class EnumExtensions 
{ 

    public static string DisplayName(this Enum value) 
    { 
     FieldInfo field = value.GetType().GetField(value.ToString()); 

     EnumDisplayNameAttribute attribute 
       = Attribute.GetCustomAttribute(field, typeof(EnumDisplayNameAttribute)) 
        as EnumDisplayNameAttribute; 

     return attribute == null ? value.ToString() : attribute.DisplayName; 
    } 
} 

public class EnumDisplayNameAttribute : Attribute 
{ 
    private string _displayName; 
    public string DisplayName 
    { 
     get { return _displayName; } 
     set { _displayName = value; } 
    } 
} 
class Enum 
    { 
     public enum Fields 
{  
    [EnumDisplayName(DisplayName = "Assigned To" 
    AssignedTo, 
    [EnumDisplayName(DisplayName = "Close Reason" 
    CloseReason, 
    [EnumDisplayName(DisplayName = "Customer ID" 
    CustomerId, 
    [EnumDisplayName(DisplayName = "Customer Name" 
    CustomerName, 
    [EnumDisplayName(DisplayName = "Company ID" 
    CompanyID, 
    [EnumDisplayName(DisplayName = "Company Name" 
    CompanyName , 
} 
} 

just like i did for my group description for listview

0
デフォルトで列挙型が期待するので、このエラーを与えている

列挙型の内部のフィールドに整数値を代入します。あなたが割り当て部分をスキップした場合

public enum Fields 
{  
    AssignedTo = 1, 
    CloseReason = 2, 
    CustomerId = 3, 
    CustomerName = 4, 
    CompanyID = 5, 
    CompanyName = 6 
} 

は、それがデフォルトの開始により、列挙型の型を許可されていないC#の文字列には、整数0

2

から始まるフィールドを割り当てます。 MSDN https://msdn.microsoft.com/en-us/library/sbbt4032.aspx

The approved types for an enum are byte, sbyte, short, ushort, int, uint, long, or ulong

から

引用プルダウンに列挙型を使用する(すなわち、[表示名]属性を使用して)変換のいくつかの種類を実行しなければならない場合。

0

それを呼び出す私はあなたがドロップダウンのための列挙型を使用してしたいとは思いません。 DictionaryやDataTableなどの構造を調べてみてください。もしあなたが正確に何をしようとしているのかについて私たちにもっと詳細を教えてくれたら助けてくれるかもしれません。 EDIT

:ここあなたはdynamicalyユーザーに表示したいものをオプションに基づいてリストを変更することができ、またComboBox

List<string> dsList = new List<string>(); 
dsList.Add("Assigned To"); 
dsList.Add("Close Reason"); 
dsList.Add("Customer ID"); 
dsList.Add("Customer Name"); 
dsList.Add("Company ID"); 
dsList.Add("Company Name"); 

comboBox1.DataSource = dsList; 

のデータソースとしてList<string>を使用しての簡単な例である

+0

私は4つのドロップダウンオプションがあります。public const string AssignedToとドロップダウンオプションを使用すると、他のドロップダウンオプションの値も表示されますが、これは無関係かもしれません。 Enumでこれを与えると、そのオプションが制限されます。たとえば、Close Reasonを使用すると、Close Reasonのドロップダウン値のみが他の値ではないことがわかります。このロジックは試しています。 – ChanGan

+0

正確に何をしたいのかまだ分かりませんが、回答に例を追加しました。リストをデータソースとしてコントロールに使用することができます。うまくいけば、それはあなたを正しい方向に押し進めるでしょう。 – Fila