DataGridView: столбец ComboBox с использованием Enum.Способ настройки из конструктора? - PullRequest
0 голосов
/ 01 марта 2012

У меня есть один столбец в DataGridView, и я хотел бы, чтобы это была ячейка ComboBox, отображающая возможные значения для enum:

public enum SurfaceType {Rough, Smooth, Mirror};

Я посмотрел вокруг и нашел статьи, подобные this , это результат, который я хотел бы получить, но мне было просто интересно, есть ли способ настроить это из режима "Дизайнер", добавив столбцы.Это возможно?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 марта 2012

Вы можете использовать конструктор, чтобы добавить раскрывающийся список в шаблон и привязать раскрывающийся список к источнику данных бизнес-объекта.Тем не менее, вам нужно немного кода, чтобы обернуть перечисление.Нечто подобное в классе помощника работает.

public static DataSet GetEnums()
{
    DataSet data = new DataSet();
    DataTable table = new DataTable();
    table.Columns.Add("Name");
    table.Columns.Add("ID");
    data.Tables.Add(table);

    DataRow r;

    foreach (SurfaceType st in Enum.GetValues(typeof(SurfaceType)))
    {   
        r = data.Tables[0].NewRow();
        r["Name"] = st.ToString();
        r["ID"] = (int)st;
        data.Tables[0].Rows.Add(r);
    }
    return data;
}
0 голосов
/ 01 марта 2012

Я бы использовал простой тип данных и сделал бы ctor закрытым.с

public class SurfaceType
{
    public static SurfaceType Rough  = new SurfaceType{Id=1, Description="Rough"};
    public static SurfaceType Smooth  = new SurfaceType{Id=2, Description="Smooth"};
    public static SurfaceType Mirror  = new SurfaceType{Id=3, Description="Mirror"};

    private SurfaceType()
    {
    }

    public int Id {get private set;}
    public string Description {get private set;}

    //override equality and hashcode is necessary.
}

будет проще работать. Еще одна приятная вещь в этом подходе - вы можете инкапсулировать функции в самом объекте SurfaceType.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...