1.寫一個judge方法,判斷cell里的內容是否相同:

          private int isTheSameCellValue(int column, int row)
                  {
                      DataGridViewCell cell1 
          = dtgMeisaiData[column, row];
                      DataGridViewCell cell2 
          = dtgMeisaiData[column, row - 1];
                      
          if (cell1.Value == null || cell2.Value == null)
                          
          return -1;
                      
          //文字列としてセルの値を比較
                      if (cell1.Value.ToString() == cell2.Value.ToString())
                          
          return 1;
                      
          else
                          
          return 0;
                  }

          2.為DataGridView寫一個CellPainting事件

          注:由于該效果與該事件的觸發時機有關,故要手寫,而非直接在設計窗口雙擊添加

          private void dtgMeisaiData_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
                  {
                      
          int rtnInt = 0;
                      
          //セルの下側の境界線を「境界線なし」に設定
                      e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None;
                      
          //1行目や列ヘッダ、行ヘッダの場合は何もしない
                      if (e.RowIndex < 1 || e.ColumnIndex < 0)
                          
          return;
                      rtnInt 
          = isTheSameCellValue(e.ColumnIndex, e.RowIndex);
                      
          if (rtnInt == 1)
                      {
                          
          //同一値の場合、セルの上側の境界線を「境界線なし」に設定
                          e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
                      }
                      
          else if (rtnInt == 0)
                      {
                          
          //同一値でない場合、セルの上側の境界線を既定の境界線に設定
                          e.AdvancedBorderStyle.Top = dtgMeisaiData.AdvancedCellBorderStyle.Top;
                      }
                      
          else if (rtnInt == -1)
                      {   
          // どちらかがNULL値の場合、何もしない。
                      }
                  }

          3.在適當的時機加入CellPainting事件

          如果沒有特殊需求,一般在DataGridView被賦完DataSource之后添加即可

          dtgMeisaiData.CellPainting   += new DataGridViewCellPaintingEventHandler(dtgMeisaiData_CellPainting);

           


          posted on 2011-06-10 09:46 Ying-er 閱讀(4634) 評論(1)  編輯  收藏 所屬分類: .Net

          評論:
          # re: C#讓DataGridView實現類似合并單元格的效果 2012-02-20 22:35 | zome
          根本沒有合并,只是去掉了線條  回復  更多評論
            
          主站蜘蛛池模板: 九台市| 许昌县| 上犹县| 砚山县| 黄梅县| 河西区| 鹤峰县| 都安| 乐陵市| 什邡市| 大洼县| 绍兴市| 望城县| 炉霍县| 仁寿县| 白河县| 忻城县| 罗源县| 苍南县| 宝山区| 综艺| 旺苍县| 新田县| 镇平县| 汝州市| 苏尼特左旗| 禹城市| 外汇| 宁陕县| 海口市| 方山县| 南充市| 五台县| 自贡市| 仙居县| 钦州市| 陕西省| 津南区| 临漳县| 昭苏县| 榆中县|