Небольшая редактируемая таблица строк. Какие формы контроля я хочу? (.СЕТЬ) - PullRequest
0 голосов
/ 24 октября 2009

У меня есть небольшой массив структур, каждая структура имеет три поля, все строки. Я хочу отобразить эти структуры в виде сетки, позволить пользователю редактировать строки в формате Excel, а затем, конечно, получить отредактированные строки. Какой элемент управления WinForms лучше всего подходит для этого?

Попробовал DataGridView, но установка DataSource в массив структур, похоже, не работает. Есть множество элементов управления с похожими именами, но я не могу понять, что и для чего. Все примеры, которые я нашел, направлены на использование базы данных в качестве источника данных - у меня просто простой массив.

Ответы [ 3 ]

1 голос
/ 24 октября 2009

вы пробовали ListView?

Вы можете добавить строки, как это.

foreach(Data d in datas)
{
  ListViewItem item =new ListViewItem(d.first);
 item.SubItems.Add(d.second);
item.SubItems.Add(d.third);

listview.Items.Add(item);
}

Существует некоторая опция для встроенного редактирования строк. Я не могу вспомнить, какой это вариант. После того, как пользователь отредактировал, просто прочитайте значения назад.

1 голос
/ 24 октября 2009

Вы действительно не получаете много, имея структуру, полную строк. Это просто помещает блок с 3 указателями в стек, а указатели указывают на кучу. Вам лучше использовать класс, так как вы будете использовать меньше стекового пространства и в итоге будете более эффективными, после чего вы сможете нормально связывать DataGridView.

0 голосов
/ 24 октября 2009

Проблема в том, что привязка данных работает только со свойствами, а не с полями. Я предполагаю, что ваш класс выглядит так:

class Strings {
    public string S1;
    public string S2;
    public string S3;
}

Измените открытые поля на свойства, такие как, например,

class Strings {
    public string S1 { get; set; }
    public string S2 { get; set; }
    public string S3 { get; set; }
}

И вы должны обнаружить, что вы можете связать ваш массив с DataGridView.

...