Salut, puis-je savoir comment obtenir la valeur enum ci-dessous pour lier dans la liste déroulante? J'ai écrit le code ci-dessous qui fonctionne bien mais je me demande si c'est le meilleur moyen.Ajouter une énumération à la liste déroulante
public enum CourseStudentStatus
{
Active = 1,
Completed = 2,
TempStopped = 3,
Stopped = 4,
}
//Bind Course Status
Dictionary<string, int> list = new Dictionary<string, int>();
foreach (int enumValue in Enum.GetValues(typeof(CourseStudentStatus)))
list.Add(Enum.GetName(typeof(CourseStudentStatus), enumValue), enumValue);
var column = ((DataGridViewComboBoxColumn)dgv.Columns["studentCourseStatus"]);
column.DataPropertyName = "StudentStatus";
column.DisplayMember = "Key";
column.ValueMember = "Value";
column.DataSource= list.ToList();
----------------- ------------------- MISE À JOUR
Salut i J'ai changé mon code à cela selon Sanjeevakumar Hiremat et ça fonctionne parfaitement.
cbStatus.DataSource = Enum.GetValues(typeof(CourseStudentStatus));
Cependant, quand je veux un Get() et que vous souhaitez lier la valeur à la cbStatus, il jeta l'erreur { « objet de référence non définie à une instance d'un objet. »}
cbStatus.SelectedValue = Course.Status;
.
Le cbStatus.Datasource n'est pas vide et il a valeur après lié à cbStatus.DataSource = Enum.GetValues(typeof(CourseStudentStatus));
conseils s'il vous plaît.
Je pense qu'il est possible de réduire ce problème de code? ou pourrait-il être converti en une fonction? – VeecoTech
vous pourriez mettre votre conversion à un dictionnaire dans une méthode d'extension pour System.Enum, ce qui rendrait votre code plus lisible et général, mais je ne pense pas qu'il existe un moyen de se lier à une énumération sans faire tous les GetValues et GetName des trucs. –