Скопируйте значения из таблицы данных в двухмерную строку C # - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть двумерная переменная, которая выглядит следующим образом:

  string[] Dimension = new string[]
        {
                        "+-----+", // -----> X     /\Y
                        "|XXXXX|",
                        "|XXXXX|",
                        "|XXXXX|",
                        "|XXXXX|",
                        "|XXXXX|",
                        "+-----+",
        };

Во-вторых, у меня есть datagridview, где 6 строк + 6 столбцов.Код для таблицы данных выглядит следующим образом:

//Adding columns to datagridview
dataGridView1.Columns.Add("X0", "X0");
dataGridView1.Columns.Add("X1", "X1");
dataGridView1.Columns.Add("X2", "X2");
dataGridView1.Columns.Add("X3", "X3");
dataGridView1.Columns.Add("X4", "X4");
dataGridView1.Columns.Add("X5", "X5");

//Adding rows to datagridview  
dataGridView1.Rows.Add("Y0");
dataGridView1.Rows.Add("Y1");
dataGridView1.Rows.Add("Y2");
dataGridView1.Rows.Add("Y3");
dataGridView1.Rows.Add("Y4");
dataGridView1.Rows.Add("Y5");

//Adding values to datagridview.    
dataGridView1.Rows[1].Cells[1].Value = "X";
dataGridView1.Rows[2].Cells[1].Value = "X";
dataGridView1.Rows[2].Cells[2].Value = "X";
dataGridView1.Rows[1].Cells[2].Value = "X";
dataGridView1.Rows[3].Cells[3].Value = "X";
dataGridView1.Rows[4].Cells[3].Value = "X";
dataGridView1.Rows[4].Cells[4].Value = "X";
dataGridView1.Rows[3].Cells[5].Value = "X";

После добавления этих значений он отображается в форме win следующим образом: enter image description here

Как преобразовать (скопировать) значения изdatagridview к моей строке с именем Dimension?

Новая строка должна выглядеть точно так:

 string[] map = new string[]
        {
                        "+-----+", // -----> X     /\Y
                        "|XX   |",
                        "|XX   |",
                        "|  X X|",
                        "|  XX |",
                        "|     |",
                        "+-----+",
        };

Возможно ли это?Чтобы получить этот «Х» внутри, чтобы получить именно этот результат?

1 Ответ

0 голосов
/ 21 сентября 2018

Таким образом, в основном вы просматриваете сетку данных Columns и Rows, используя 2 для циклов.

1) Создайте новую карту:

string[] map = new string[dataGridView1.Rows.Count+1];
// give it a header
map[0] = "+" + new string('-', dataGridView1.Columns.Count - 1) + "+";

, используя StringBuilder вы можете построить для каждой строки / строки строку, которая зависит от значений в вашей сетке.

for (int i = 1; i < dataGridView1.Rows.Count; i++)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("|"); // frame left border
    for (int j = 1; j < dataGridView1.Columns.Count; j++)
    {
        // try to get the value            
        string value = dataGridView1.Rows[i].Cells[j].Value?.ToString();
        // if there is no value => take a space otherwise take the value
        value = string.IsNullOrEmpty(value) ? " " : value;
        // plug it into your string builder
        sb.Append(value);
    }

    sb.Append("|");  // frame right border
    // lunge the finished string into the array
    map[i] = sb.ToString();
}
// close the frame
map[dataGridView1.Rows.Count] = "+" + new string('-', dataGridView1.Columns.Count - 1) + "+";
Console.WriteLine(string.Join(Environment.NewLine, map));

результирующий вывод в консоли выглядит следующим образом:

+-----+
|XX   |
|XX   |
|  X X|
|  XX |
|     |
|     |
+-----+
...