Описание перечисления в DataGridView - PullRequest
3 голосов
/ 11 января 2012

У меня проблема с описанием enum.Я хочу, чтобы dataGrid показывал мне описание перечисления, а не «ToString ()» перечисления.

enum DirectionEnum
{
    [Description("Right to left")]
    rtl,

    [Description("Left to right")]
    ltr
}
class Simple
{
    [DisplayName("Name")]
    public string Name { get; set; }

    [DisplayName("Direction")]
    public DirectionEnum dir { get; set; }
}
class DirectionDialog : Form
{
    public DirectionDialog()
    {
        DataGridView table = new DataGridView();
        List<Simple> list = new List<Simple>(new Simple[]{ 
            new Simple{ Name = "dave", dir = DirectionEnum.ltr}, 
            new Simple{ Name = "dan", dir = DirectionEnum.rtl }
        });
        table.DataSource = list;
        //view "rtl" or "ltr" in "Direction"
        //I want "Right to left" or "Left to right:
    }
}

Я хочу просмотреть столбец направления по описанию перечисления.Что я делаю?Извините за мой плохой английский.

1 Ответ

2 голосов
/ 19 января 2012
class Simple
{
    [DisplayName("Name")]
    public string Name { get; set; }

    // Remove external access to the enum value
    public DirectionEnum dir { private get; set; }

    // Add a new string property for the description
    [DisplayName("Direction")]
    public string DirDesc
    {
        get
        {
            System.Reflection.FieldInfo field = dir.GetType().GetField(dir.ToString());

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

            return attribute == null ? dir.ToString() : attribute.Description;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...