2012-04-10 9 views
0

Ich habe DataGridView auf meinem Formular und ich versuche, Zelle zu färben.Problem mit Farbe datagridview

Hier ist der Code:

public partial class Form1 : Form 
    { 
     DataTable dtToGrid = new DataTable(); 
     BindingSource bs = new BindingSource(); 

     public Form1() 
     { 
      InitializeComponent(); 

      dtToGrid.Columns.Add("Group"); 

      DataRow dr; 

      dr = dtToGrid.NewRow(); 
      dr["Group"] = "must become lightGreen"; 

      dtToGrid.Rows.Add(dr);   

      bs.DataSource = dtToGrid; 
      dataGridView1.DataSource = bs; 

      ColorData(); 

      dataGridView1.Refresh(); 
     } 

     public void ColorData() 
     { 
      dataGridView1[0, 0].Style.BackColor = Color.LightGreen; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      ColorData(); 
     } 
    } 

Wie Sie sehen können, Funktion Colordata zweimal aufrufen, aber wenn es vom Konstruktor aufgerufen wird - nichts passiert und Zelle ist immer noch weiß. Aufruf von button1_Click, was event-function ist, färbt die Zelle korrekt.

Was ist los?

+0

Welche Klasse ist das Objekt dataGridView1? –

+0

System.Windows.Forms.DataGridView – Metaller

+0

[Ähnliche Frage] (http://stackoverflow.com/questions/1365617/how-to-force-refresh-the-datagridviews-content) Überprüfen Sie die Antwort auf den Link. dataGridView1.EndEdit(); wird wahrscheinlich den Trick machen, da du Sachen änderst, die du bearbeitest. –

Antwort

0

Ich habe die Antwort selbst gefunden. Erstens - das Formular sollte geladen werden und erst danach können Sie die Farbe der Zelle ändern. Ich ändere Farbe in Event-Funktion Laden für das Hauptformular und alles funktioniert.

Verwandte Themen