Je travaille sur la fenêtre C# ... vs05 ...... je veux mettre de l'espace sur la chaîne enum .... je le fais ci-dessous le code ai cela ..... Mon problème est après la sélection d'une valeur de la combo comment puis-je obtenir le numéro d'index de cette valeur ..... et si je suis allé en mode d'édition, je dois montrer la valeur que l'utilisateur est déjà sélectionné ..... comment obtenir enum valeur sélectionnée sur la base du numéro d'indexAssociation de chaînes avec enums en C#
public enum States
{
California,
[Description("New Mexico")]
NewMexico,
[Description("New York")]
NewYork,
[Description("South Carolina")]
SouthCarolina,
Tennessee,
Washington
}
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
public static IEnumerable<T> EnumToList<T>()
{
Type enumType = typeof(T);
// Can't use generic type constraints on value types,
// so have to do check like this
if (enumType.BaseType != typeof(Enum))
throw new ArgumentException("T must be of type System.Enum");
Array enumValArray = Enum.GetValues(enumType);
List<T> enumValList = new List<T>(enumValArray.Length);
foreach (int val in enumValArray)
{
enumValList.Add((T)Enum.Parse(enumType, val.ToString()));
}
return enumValList;
}
private void Form1_Load(object sender, EventArgs e)
{
//cboSurveyRemarksType = new ComboBox();
cboSurveyRemarksType.Items.Clear();
foreach (States state in EnumToList<States>())
{
cboSurveyRemarksType.Items.Add(GetEnumDescription(state));
}
}
J'ai essayé de le faire dans http://stackoverflow.com/questions/796607/how-do-i-override-tostring-in-c-enums - beaucoup de gens ont donné d'excellentes idées et réponses! – scraimer