.net c # datagridview, заполненный данными / настройками без базы данных - PullRequest
0 голосов
/ 16 июня 2010

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

У меня есть 10 трубок, каждая из которых имеет 8 вертикальных позиций внутри, так что у меня в основном сетка 10 на 8. У каждого из этих слотов есть (или нет) изображение в папке. Как получить сетку данных, отражающую эту информацию, нарисовать сетку, проверить папку и, если изображение существует, закрасить его белым, а если не закрасить красным?

Извините, если звучит немного странно, спасибо, Р.

Ответы [ 2 ]

0 голосов
/ 16 июня 2010

Это может хорошо работать с сеткой, установленной в виртуальном режиме:

  • Установите для свойства VirtualMode сетки значение True.
  • Добавьте обработчик к событию CellValueNeeded, что-то вроде:

.

private void Form1_Load(object sender, EventArgs e)
{
    dataGridView1.RowCount = 8;
    dataGridView1.ColumnCount = 10;
}

private void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
    var bgColor = ((0 == e.ColumnIndex % 2) && (0 == e.RowIndex % 2))
        ? Color.Red
        : Color.White;
    dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = bgColor;
}

Конечно,% 2 будет заменено фактической проверкой существования изображения.

Подробнее о DataGridView в виртуальном режиме здесь .

0 голосов
/ 16 июня 2010

При условии, что он называется DataGridView1, который содержит 10 столбцов, и что у вас есть метод с именем ImageExists, который принимает 2 индекса int, должно работать следующее:

dataGridView1.AllowUserToAddRows = false;
dataGridView1.ReadOnly = true;
for (int rowIndex = 0; rowIndex < 8; rowIndex++)
{
     DataGridViewRow row = new DataGridViewRow();
     row.CreateCells(dataGridView1);
     dataGridView1.Rows.Add(row);
     for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++)
     {
          if (!ImageExists(rowIndex, cellIndex))
                row.Cells[cellIndex].Style.BackColor = Color.Red;                        
     }
}
...