Вывод матрицы на форму

Рейтинг: 0Ответов: 2Опубликовано: 25.03.2011

Доброго времени суток!

Есть задача, вывести матрицу на форму(двумерный массив) через C# WinForms. Сейчас думаю каким способом это проще всего сделать. Есть на примете контрол ListBox, но я не знаю будет ли он корректно отображать её.

Имеется ввиду стандартная матрица.

Ответы

▲ 2Принят

На мой взгляд, самым простым и в то же время наиболее функциональным будет сочетание DataTable вместе с DataGridView.

Сразу же вижу потенциальную проблему в том, что DataGridView автоматически не будет добавлять / удалять колонки у матрицы при изменении данных, потребуется реализовывать это вручную.

Ничего подобного, при таком коде:

DataTable matrix = new DataTable("Матрица");
...
//загоняем матрицу в matrix
...
dataGridView.DataSource = matrix; 
/* этой строчкой теперь все изменения dataGridView
   будут отражаться в matrix */

И если на форму добавить, к примеру, TextBox и Button для добавления нового столбца, то реализация нажатия кнопки будет следующая:

matrix.Columns.Add(textBox.Text, typeof(int));
dataGridView.Update();

И новая колонка будет добавлена в matrix. Более того, в силу своего утверждения о функциональности, можно сохранить эту матрицу в файл одной строчкой:

matrix.WriteXml("Matrix.xml", XmlWriteMode.WriteSchema);

И также одной строчкой загрузить при необходимости...

▲ 1

Специально для матричных данных у DevExpress есть компонент PivotGrid. Но он платный.

Если собираетесь ограничиться стандартными компонентами WindowsForms, рекомендую либо использовать DataTable, либо вручную реализовать в своей матрице IList и ITypedList, чтобы представлять строки и колонки как динамические множества. Сразу же вижу потенциальную проблему в том, что DataGridView автоматически не будет добавлять / удалять колонки у матрицы при изменении данных, потребуется реализовывать это вручную.