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
          根本沒有合并,只是去掉了線條  回復  更多評論
            
          主站蜘蛛池模板: 连江县| 六安市| 鸡西市| 怀宁县| 鄂伦春自治旗| 新邵县| 晋宁县| 淮北市| 保康县| 彝良县| 宜兰市| 顺义区| 陈巴尔虎旗| 怀化市| 奎屯市| 湟源县| 枞阳县| 磴口县| 辽阳市| 金昌市| 仁化县| 泰宁县| 南皮县| 仁怀市| 达日县| 韶山市| 淮滨县| 尚志市| 渝北区| 高碑店市| 吴旗县| 武邑县| 乐业县| 石柱| 莒南县| 项城市| 阳西县| 平远县| 凯里市| 砚山县| 广汉市|