Заполните ComboBox в Datagridview от Enums - PullRequest
0 голосов
/ 17 мая 2018

это мой enum класс:

   public enum Uom
        {
            not_known,
            lbs,
            psi,
            tank,
            tube,
            each,
            gallon,
            meters,
            cc,
            mg,
            bag,
            capsule
    }

и я хочу заполнить поле со списком во втором столбце в datagridview1. я попробовал этот код:

DataGridViewComboBoxColumn dtgcombo = new DataGridViewComboBoxColumn();

dtgcombo.DataSource = Enum.GetNames(typeof(Uom));

datagridview1.Rows.Add(new object[] { "0", dtgcombo});

но это говорит об ошибке "... значение недействительно"

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Код пытается добавить DataGridviewColumn к DataGridViewCell.. Это не будет работать так, как вы ожидаете.Кроме того, нет смысла добавлять одно и то же поле со списком в каждую ячейку в столбце.Вы должны добавить DataGridViewComboBoxColumn к DataGridView, как ответил инженер.Затем, когда вы добавляете строку и знаете, что enum использовать…, вы добавляете строку наподобие: datagridview1.Rows.Add("0", Uom.tank.ToString()); Вторым параметром может быть любое из перечислений.Код ниже должен выполнить то, что вы пытаетесь сделать.Второй столбец - это столбец со списком.

DataGridViewComboBoxColumn dtgcombo = new DataGridViewComboBoxColumn();
dtgcombo.DataSource = Enum.GetNames(typeof(Uom));
dataGridView1.Columns.Add(dtgcombo);
dataGridView1.Rows.Add("0", Uom.meters.ToString());
dataGridView1.Rows.Add("0", "");
dataGridView1.Rows.Add("0", Uom.not_known.ToString());
0 голосов
/ 18 мая 2018

это ответ, который я получил до сих пор .. забыл ссылку моей ссылки

var dtgcombo = new DataGridViewComboBoxCell();
dtgcombo.DataSource = Enum.GetNames(typeof(Uom)); 

int n = dtgRequests.Rows.Add();
    datagridview1.Rows[n].Cells[0].Value = "0";
    datagridview1.Rows[n].Cells[1] = dtgcombo;

большое спасибо, ребята, за помощь!

0 голосов
/ 17 мая 2018

попробуй

datagridview1.Columns.Add(dtgcombo);

добавляет комбобокс в качестве столбца для всех строк.

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