2010-06-16 3 views
0

Je ne l'ai jamais utilisé le datagridview dans tout autre scénario autre que celui où il est peuplait par une base de données si soudainement mon esprit se vide ....net C# datagridview peuplant avec des données non base de données/configuration

Je 10 tubes, chacun avec 8 positions verticales à l'intérieur, donc j'ai une grille de 10 par 8 essentiellement. Chacun de ces emplacements a (ou non) une image dans un dossier. Comment puis-je obtenir un datagridview pour refléter cette information, dessiner une grille, vérifier le dossier et si l'image existe la peindre en blanc, et sinon la peindre en rouge?

Désolé si des sons un peu bizarre, merci, R.

Répondre

0

En supposant qu'il est appelé DataGridView1 qui contient 10 colonnes et que vous avez une méthode appelée ImageExists qui accepte les 2 index int les éléments suivants doivent travailler:

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;       
    } 
} 
0

Cela peut fonctionner très bien avec une grille réglé en mode virtuel:

  • définir la propriété VirtualMode de la grille sur True.
  • Ajouter un gestionnaire à l'événement CellValueNeeded, quelque chose le long des lignes de:

.

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; 
} 

Bien sûr, le contenu de% 2 serait remplacé par un contrôle d'existence d'image réel.

Plus d'informations sur DataGridView en mode virtuel here.

Questions connexes