Вывод строки / столбца из матрицы
Приведённый ниже код выводит из массива строку/столбец, что задаются пользователем вручную. Однако вывод осуществляется в виде матрицы, а нужно чтобы выводился одномерный массив(грубо говоря, во второй таблице только строка, а в третьей только столбец), как это сделать??
{
int[,] m = new int[DGV_A.RowCount, DGV_A.ColumnCount];
for (int i = 0; i < DGV_A.RowCount; i=i+1)
{
for (int j = 0; j < DGV_A.ColumnCount; j++)
{
m[i, j] = Convert.ToInt32(DGV_A[j, i].Value);
}
}
//
int p1 = Convert.ToInt32(textBox1.Text); // Ввод числа для получения строки p
int q1 = Convert.ToInt32(textBox2.Text); // Ввод числа для получения столбца q
//Вывод массива X
for (int j = 0; j < DGV_A.ColumnCount; j++)
{
DGV_X[j, p1].Value = DGV_A[j, p1].Value;
}
//Вывод массива Y
for (int i = 0; i < DGV_A.RowCount; i++)
{
DGV_Y[q1, i].Value = DGV_A[q1, i].Value;
}
Ответы (1 шт):
У Вас DGV_A, DGV_X и DGV_Y - это три одинаковых контрола, созданных в дизайнере форм.
Как я понял, Вам нужно преопределить кол-во строк и столбцов в контролах DGV_X и DGV_Y: в одном делаем 1 строку, в другом - 1 столбец.
Эти контролы - это стандартный WinForm'овский DataGridView. При создании таких контролов студия склоняет вас к тому, чтобы назначить им то, что называется DataSource. При этом размер контрола начинает зависеть от того, сколько данных есть в data source. Это называется data binding, и, с одной стороны, это удобно, так как не надо напрямую привзяывать "такую то ячейку к такому то элементу матрицы", а, с другой стороны, это лишает Вас гибкости.
Поэтому хорошо бы для DGV_X и DGV_Y или назначить другие DataSource, или отказаться от использования DataSource и "все делать руками"
Если пойти по первому пути - то вам одновременно ст матрицей надо будет завести две "фиктивные", "вырожденные" матрицы: одна будет копией одного столбца основной матрицы, вторая - копией строки основнйо матрицы. И уже эти две матрицы назначить в качестве DаtaSource для DGV_X и DGV_Y.
Если работать "вручную", то надо погуглить по словами data grid view unbound mode - скорее всего, первые же 1-2 примера дадут Вам общую картину.
Надеюсь, моё объяснение позволит Вам разобраться дальше.
