2010-07-02 55 views
0

我有3個問題:的DataGridView - 對datagridview的問題的C#Windows繪製矩形形成

  • wheter我做我的工作的一個好辦法

  • 爲什麼當我滾動的dataGridView,畫矩形dissapear。 。

  • 爲什麼畫是如此之慢...

這裏是其中我要繪製與每列中的細胞羣中,具有相同的值的文本豐富多彩矩形的代碼,空值不應該有矩形

空隙DataGridView1CellPainting(對象發件人,DataGridViewCellPaintingEventArgs E) {

的foreach(在this.dataGridView1.Columns的DataGridViewColumn列){

  string tempCellValue = string.Empty; 
      int tempRectX = -1; 
      int tempRectY = -1; 
      int tempRectYEnd = -1; 
      int tempRectWidth = -1; 
      int tempRectHeight = -1; 

      foreach (DataGridViewRow row in this.dataGridView1.Rows){ 

       Rectangle rect = this.dataGridView1.GetCellDisplayRectangle(
        column.Index, row.Index,true); 

       DataGridViewCell cell = dataGridView1.Rows[row.Index].Cells[column.Index]; 
       if ( cell.Value!=null){ 


        if (tempRectX==-1){ 
         tempRectX = rect.Location.X; 
         tempRectY = rect.Location.Y; 
         tempCellValue = cell.Value.ToString(); 
        }else 
         if (cell.Value.ToString()!=tempCellValue){ 
         tempRectYEnd = rect.Location.Y; 

         Rectangle newRect = new Rectangle(tempRectX, 
                  tempRectY , 5 , 
                  tempRectYEnd ); 
         using (
          Brush gridBrush = new SolidBrush(Color.Coral), 
          backColorBrush = new SolidBrush(Color.Coral)) 
         { 
          using (Pen gridLinePen = new Pen(gridBrush)) 
          { 

           e.Graphics.FillRectangle(backColorBrush,newRect); 

          } } 
         tempRectX=-1; 
         tempCellValue = string.Empty; 
        } 
        }else if (tempRectX!=-1){ 
        tempRectYEnd = rect.Location.Y; 
        Rectangle newRect = new Rectangle(tempRectX, 
                 tempRectY , 50 , 
                 tempRectYEnd ); 
        using (
         Brush gridBrush = new SolidBrush(Color.Coral), 
         backColorBrush = new SolidBrush(Color.Coral)) 
        { 
         using (Pen gridLinePen = new Pen(gridBrush)) 
         { 

          e.Graphics.FillRectangle(backColorBrush,newRect); 

         } } 
        tempRectX=-1; 
        tempCellValue = string.Empty; 
       } 
      }} 
+0

您是否找到其他更好的解決方案?我有類似的問題 – Saint 2012-04-09 09:50:01

回答