隨筆-94  評論-56  文章-3  trackbacks-0

          對于下面的表格數據,我們經常會見到,
          20090601 00001 100 abc 1 sumisu
          20080601 00001 120 abc 1 yasio
          20070601 00001 150 def 1 toms
          20050601 00001 190 efg 1 arabama


          但有時候我們希望將同一列中內容相同的單元格合并,變成下面這樣:
          20090601 00001 100 abc 1 sumisu
          20080601 120 yasio
          20070601 150 def toms
          20050601 190 efg arabama

          那么該如何實現呢?
          在網上調查了很多方法,也請教了很多人,雖然有一些解決方法,但都不是最理想的。
          偶爾下載到一個例子,很漂亮地實現了這個功能,不過是C#的,于是我花了不少時間,終于將她用VB.net實現了,在這里與各位分享。

          Imports System
          Imports System.Collections.Generic
          Imports System.ComponentModel
          Imports System.Data
          Imports System.Drawing
          Imports System.Drawing.Design
          Imports System.Text
          Imports System.Windows.Forms
          Imports System.Collections
          Imports System.Reflection
          Imports System.Runtime.InteropServices

          Public Class RowMergeView
              
          Inherits DataGridView

              
          Protected Overrides Sub OnCellPainting(ByVal e As DataGridViewCellPaintingEventArgs)

                  
          If e.RowIndex > -1 And e.ColumnIndex > -1 Then
                      DrawCell(e)
                  
          End If

              
          End Sub


              
          '/ <summary>
              '/ DrawCell
              '/ </summary>
              '/ <param name="e"></param>
              Private Sub DrawCell(ByVal e As DataGridViewCellPaintingEventArgs)
                  
          If e.CellStyle.Alignment = DataGridViewContentAlignment.NotSet Then
                      e.CellStyle.Alignment 
          = DataGridViewContentAlignment.MiddleCenter
                  
          End If
                  
          Dim gridBrush As Brush = New SolidBrush(Me.GridColor)
                  
          'Dim backBrush As SolidBrush = New SolidBrush(e.CellStyle.BackColor)
                  Dim backBrush As SolidBrush = New SolidBrush(Color.White)
                  
          Dim fontBrush As SolidBrush = New SolidBrush(e.CellStyle.ForeColor)
                  
          Dim cellwidth As Integer
                  
          Dim UpRows As Integer = 0
                  
          Dim DownRows As Integer = 0
                  
          Dim count As Integer = 0
                  
          If Me.MergeColumnNames.Contains(Me.Columns(e.ColumnIndex).Name) And e.RowIndex <> -1 Then
                      cellwidth 
          = e.CellBounds.Width
                      
          Dim gridLinePen As Pen = New Pen(gridBrush)
                      
          Dim curValue As String = CType(e.Value, String)
                      
          IIf(curValue Is Nothing"", e.Value.ToString().Trim())
                      
          Dim curSelected As String = CType(Me.CurrentRow.Cells(e.ColumnIndex).Value, String)
                      
          IIf(curSelected Is Nothing""Me.CurrentRow.Cells(e.ColumnIndex).Value.ToString().Trim())
                      
          'If Not String.IsNullOrEmpty(curValue) Then
                      Dim i As Integer
                      
          For i = e.RowIndex To Me.Rows.Count - 1 Step i + 1
                          
          If Me.Rows(i).Cells(e.ColumnIndex).Value.ToString().Equals(curValue) Then

                              DownRows 
          = DownRows + 1
                              
          If e.RowIndex <> i Then
                                  cellwidth 
          = cellwidth
                                  
          IIf(cellwidth < Me.Rows(i).Cells(e.ColumnIndex).Size.Width, cellwidth, Me.Rows(i).Cells(e.ColumnIndex).Size.Width)
                              
          End If
                          
          Else
                              
          Exit For
                          
          End If
                      
          Next

                      
          Dim j As Integer
                      
          For j = e.RowIndex To 0 Step j - 1
                          
          If Me.Rows(j).Cells(e.ColumnIndex).Value.ToString().Equals(curValue) Then

                              UpRows 
          = UpRows + 1
                              
          If e.RowIndex <> j Then
                                  cellwidth 
          = cellwidth
                                  
          IIf(cellwidth < Me.Rows(j).Cells(e.ColumnIndex).Size.Width, cellwidth, Me.Rows(j).Cells(e.ColumnIndex).Size.Width)
                              
          End If
                          
          Else
                              
          Exit For
                          
          End If
                      
          Next

                      count 
          = DownRows + UpRows - 1
                      
          If count < 2 Then
                          
          Return
                      
          End If
                      
          'End If
                      If Me.Rows(e.RowIndex).Selected Then
                          backBrush.Color 
          = e.CellStyle.SelectionBackColor
                          fontBrush.Color 
          = e.CellStyle.SelectionForeColor
                      
          End If

                      e.Graphics.FillRectangle(backBrush, e.CellBounds)

                      PaintingFont(e, cellwidth, UpRows, DownRows, count)
                      
          If DownRows = 1 Then
                          e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom 
          - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1)
                          count 
          = 0
                      
          End If

                      e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right 
          - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1)

                      e.Handled 
          = True
                  
          End If
              
          End Sub


              
          '/ <summary>
              '/ PaintingFont
              '/ </summary>
              Private Sub PaintingFont(ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs, ByVal cellwidth As IntegerByVal UpRows As IntegerByVal DownRows As IntegerByVal count As Integer)
                  
          Dim fontBrush As SolidBrush = New SolidBrush(e.CellStyle.ForeColor)
                  
          Dim fontheight As Integer = CType(e.Graphics.MeasureString(e.Value.ToString(), e.CellStyle.Font).Height, Integer)
                  
          Dim fontwidth As Integer = CType(e.Graphics.MeasureString(e.Value.ToString(), e.CellStyle.Font).Width, Integer)
                  
          Dim cellheight As Integer = e.CellBounds.Height

                  
          If e.CellStyle.Alignment = DataGridViewContentAlignment.BottomCenter Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, CType(e.CellBounds.X + (cellwidth - fontwidth) / 2Single), e.CellBounds.Y + cellheight * DownRows - fontheight)
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.BottomLeft Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X, e.CellBounds.Y + cellheight * DownRows - fontheight)
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.BottomRight Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X + cellwidth - fontwidth, e.CellBounds.Y + cellheight * DownRows - fontheight)
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, CType(e.CellBounds.X + (cellwidth - fontwidth) / 2Single), CType(e.CellBounds.Y - cellheight * (UpRows - 1+ (cellheight * count - fontheight) / 2Single))
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X, CType(e.CellBounds.Y - cellheight * (UpRows - 1+ (cellheight * count - fontheight) / 2Single))
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X + cellwidth - fontwidth, CType(e.CellBounds.Y - cellheight * (UpRows - 1+ (cellheight * count - fontheight) / 2Single))
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.TopCenter Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X + CType((cellwidth - fontwidth) / 2Single), e.CellBounds.Y - cellheight * (UpRows - 1))
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.TopLeft Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X, e.CellBounds.Y - cellheight * (UpRows - 1))
                  
          ElseIf e.CellStyle.Alignment = DataGridViewContentAlignment.TopRight Then
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X + cellwidth - fontwidth, e.CellBounds.Y - cellheight * (UpRows - 1))
                  
          Else
                      e.Graphics.DrawString(
          CType(e.Value, String), e.CellStyle.Font, fontBrush, e.CellBounds.X + CType((cellwidth - fontwidth) / 2Single), CType(e.CellBounds.Y - cellheight * (UpRows - 1+ (cellheight * count - fontheight) / 2Single))
                  
          End If
              
          End Sub


              
          '/ <summary>
              '/ MergeColumnNames
              '/ </summary>
              Public Property MergeColumnNames() As List(Of String)
                  
          Get
                      
          Return _mergecolumnname
                  
          End Get
                  
          Set(ByVal Value As List(Of String))
                      _mergecolumnname 
          = Value
                  
          End Set
              
          End Property

              
          Private _mergecolumnname As List(Of String= New List(Of String)()

          End Class


          Imports System
          Imports System.Collections.Generic
          Imports System.ComponentModel
          Imports System.Data
          Imports System.Drawing
          Imports System.Text
          Imports System.Windows.Forms


          Public Class Form1

              
          Public Sub New()
                  InitializeComponent()
                  
          Dim dt As DataTable = New DataTable()
                  
          Dim i As Integer
                  dt.Columns.Add(
          "1")
                  dt.Columns.Add(
          "2")
                  dt.Columns.Add(
          "3")
                  dt.Columns.Add(
          "4")
                  dt.Columns.Add(
          "5")
                  dt.Columns.Add(
          "6")
                  dt.Rows.Add(
          "20090601""00001""100""abc""1""sumisu")
                  dt.Rows.Add(
          "20080601""00001""120""abc""1""yasio")
                  dt.Rows.Add(
          "20070601""00001""150""def""1""toms")
                  dt.Rows.Add(
          "20050601""00001""190""efg""1""arabama")
                  
          Me.rowMergeView1.DataSource = dt
                  
          Me.rowMergeView1.ColumnHeadersHeight = 20
                  
          Me.rowMergeView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
                  
          For i = 1 To dt.Columns.Count
                      
          Me.rowMergeView1.MergeColumnNames.Add("Column" & i)
                  
          Next
              
          End Sub

          End Class


          <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
          Partial 
          Class Form1
              
          Inherits System.Windows.Forms.Form

              
          'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
              <System.Diagnostics.DebuggerNonUserCode()> _
              
          Protected Overrides Sub Dispose(ByVal disposing As Boolean)
                  
          Try
                      
          If disposing AndAlso components IsNot Nothing Then
                          components.Dispose()
                      
          End If
                  
          Finally
                      
          MyBase.Dispose(disposing)
                  
          End Try
              
          End Sub


              
          'Windows フォーム デザイナで必要です。
              Private components As System.ComponentModel.IContainer

              
          'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
              'Windows フォーム デザイナを使用して変更できます。  
              'コード エディタを使って変更しないでください。
              <System.Diagnostics.DebuggerStepThrough()> _
              
          Private Sub InitializeComponent()
                  
          Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
                  
          Me.Panel1 = New System.Windows.Forms.Panel
                  
          Me.Button1 = New System.Windows.Forms.Button
                  
          Me.rowMergeView1 = New testMearge.RowMergeView
                  
          Me.Column1 = New System.Windows.Forms.DataGridViewTextBoxColumn
                  
          Me.Column2 = New System.Windows.Forms.DataGridViewTextBoxColumn
                  
          Me.Column3 = New System.Windows.Forms.DataGridViewTextBoxColumn
                  
          Me.Column4 = New System.Windows.Forms.DataGridViewTextBoxColumn
                  
          Me.Column5 = New System.Windows.Forms.DataGridViewTextBoxColumn
                  
          Me.Column6 = New System.Windows.Forms.DataGridViewTextBoxColumn
                  
          Me.Panel1.SuspendLayout()
                  
          CType(Me.rowMergeView1, System.ComponentModel.ISupportInitialize).BeginInit()
                  
          Me.SuspendLayout()
                  
          '
                  'Panel1
                  '
                  Me.Panel1.Controls.Add(Me.Button1)
                  
          Me.Panel1.Dock = System.Windows.Forms.DockStyle.Bottom
                  
          Me.Panel1.Location = New System.Drawing.Point(0312)
                  
          Me.Panel1.Name = "Panel1"
                  
          Me.Panel1.Size = New System.Drawing.Size(59531)
                  
          Me.Panel1.TabIndex = 1
                  
          '
                  'Button1
                  '
                  Me.Button1.Location = New System.Drawing.Point(4995)
                  
          Me.Button1.Name = "Button1"
                  
          Me.Button1.Size = New System.Drawing.Size(7523)
                  
          Me.Button1.TabIndex = 0
                  
          Me.Button1.Text = "Button1"
                  
          Me.Button1.UseVisualStyleBackColor = True
                  
          '
                  'rowMergeView1
                  '
                  Me.rowMergeView1.AllowUserToAddRows = False
                  
          Me.rowMergeView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill
                  
          Me.rowMergeView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
                  
          Me.rowMergeView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Column1, Me.Column2, Me.Column3, Me.Column4, Me.Column5, Me.Column6})
                  
          Me.rowMergeView1.Dock = System.Windows.Forms.DockStyle.Fill
                  
          Me.rowMergeView1.Location = New System.Drawing.Point(00)
                  
          Me.rowMergeView1.MergeColumnNames = CType(resources.GetObject("rowMergeView1.MergeColumnNames"), System.Collections.Generic.List(Of String))
                  
          Me.rowMergeView1.Name = "rowMergeView1"
                  
          Me.rowMergeView1.RowTemplate.Height = 21
                  
          Me.rowMergeView1.Size = New System.Drawing.Size(595343)
                  
          Me.rowMergeView1.TabIndex = 0
                  
          '
                  'Column1
                  '
                  Me.Column1.DataPropertyName = "1"
                  
          Me.Column1.HeaderText = "日期"
                  
          Me.Column1.Name = "Column1"
                  
          '
                  'Column2
                  '
                  Me.Column2.DataPropertyName = "2"
                  
          Me.Column2.HeaderText = "代碼"
                  
          Me.Column2.Name = "Column2"
                  
          '
                  'Column3
                  '
                  Me.Column3.DataPropertyName = "3"
                  
          Me.Column3.HeaderText = "價格"
                  
          Me.Column3.Name = "Column3"
                  
          '
                  'Column4
                  '
                  Me.Column4.DataPropertyName = "4"
                  
          Me.Column4.HeaderText = "備注"
                  
          Me.Column4.Name = "Column4"
                  
          '
                  'Column5
                  '
                  Me.Column5.DataPropertyName = "5"
                  
          Me.Column5.HeaderText = "標志"
                  
          Me.Column5.Name = "Column5"
                  
          '
                  'Column6
                  '
                  Me.Column6.DataPropertyName = "6"
                  
          Me.Column6.HeaderText = "更新者"
                  
          Me.Column6.Name = "Column6"
                  
          '
                  'Form1
                  '
                  Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
                  
          Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
                  
          Me.ClientSize = New System.Drawing.Size(595343)
                  
          Me.Controls.Add(Me.Panel1)
                  
          Me.Controls.Add(Me.rowMergeView1)
                  
          Me.Name = "Form1"
                  
          Me.Text = "Form1"
                  
          Me.Panel1.ResumeLayout(False)
                  
          CType(Me.rowMergeView1, System.ComponentModel.ISupportInitialize).EndInit()
                  
          Me.ResumeLayout(False)

              
          End Sub

              
          Friend WithEvents rowMergeView1 As RowMergeView
              
          Friend WithEvents Panel1 As System.Windows.Forms.Panel
              
          Friend WithEvents Button1 As System.Windows.Forms.Button
              
          Friend WithEvents Column1 As System.Windows.Forms.DataGridViewTextBoxColumn
              
          Friend WithEvents Column2 As System.Windows.Forms.DataGridViewTextBoxColumn
              
          Friend WithEvents Column3 As System.Windows.Forms.DataGridViewTextBoxColumn
              
          Friend WithEvents Column4 As System.Windows.Forms.DataGridViewTextBoxColumn
              
          Friend WithEvents Column5 As System.Windows.Forms.DataGridViewTextBoxColumn
              
          Friend WithEvents Column6 As System.Windows.Forms.DataGridViewTextBoxColumn

          End Class


          運行結果如下:
           
          原C#代碼:
          /Files/xiekai-blog/DataGridView.rar
          posted on 2009-06-17 12:36 小言身寸 閱讀(12702) 評論(18)  編輯  收藏 所屬分類: . NET 開發

          評論:
          # re: vb.net中dataGridView的單元格的合并 2010-01-20 14:09 | JonesVale
          請問以下代碼是如何所得 ,請指點,謝謝!
          '
          'rowMergeView1
          '
          Me.rowMergeView1.AllowUserToAddRows = False
          Me.rowMergeView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill
          Me.rowMergeView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
          Me.rowMergeView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Column1, Me.Column2, Me.Column3, Me.Column4, Me.Column5, Me.Column6})
          Me.rowMergeView1.Dock = System.Windows.Forms.DockStyle.Fill
          Me.rowMergeView1.Location = New System.Drawing.Point(0, 0)
          Me.rowMergeView1.MergeColumnNames = CType(resources.GetObject("rowMergeView1.MergeColumnNames"), System.Collections.Generic.List(Of String))
          Me.rowMergeView1.Name = "rowMergeView1"
          Me.rowMergeView1.RowTemplate.Height = 21
          Me.rowMergeView1.Size = New System.Drawing.Size(595, 343)
          Me.rowMergeView1.TabIndex = 0

            回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2010-01-21 14:44 | JonesVale
          中心是這一句
          Me.rowMergeView1.MergeColumnNames = CType(resources.GetObject("rowMergeView1.MergeColumnNames"), System.Collections.Generic.List(Of String))
            回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2010-04-26 15:53 | youke
          以上代碼在vs2008中需要將and改為andalso  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2010-12-16 19:56 | pxfinal
          為什么我試了一下,總是顯示“為將對象引用到實例”,當添加
          Me.RowMergeView1.MergeColumnNames.Add("Column" & i)這個時候

          Set(ByVal Value As Collection)
          _mergecolumnname = Value ‘value=nothing
          End Set
          這樣就將這個屬性再次賦值為空了, 無法添加。  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2011-03-18 14:27 | xiekai
          你好可能把源碼發給我嗎?
          郵箱:niaiyaolong@163.com
          謝謝!  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2011-04-16 21:07 | xinbo
          Protected Overrides Sub OnCellPainting(ByVal e As DataGridViewCellPaintingEventArgs) '

          If e.RowIndex > -1 AndAlso e.ColumnIndex > -1 AndAlso e.Value IsNot Nothing(此處添加判斷) Then
          DrawCell(e)
          End If

          End Sub

          修改第二處:

          For i = e.RowIndex To Me.Rows.Count - 1 Step i + 1
          If Me.Rows(i).Cells(e.ColumnIndex).Value Is Nothing Then
          Exit For
          End If ‘添加一個判斷
          If Me.Rows(i).Cells(e.ColumnIndex).Value.ToString().Equals(curValue) Then

          DownRows = DownRows + 1
          If e.RowIndex <> i Then
          cellwidth = cellwidth
          IIf(cellwidth < Me.Rows(i).Cells(e.ColumnIndex).Size.Width, cellwidth, Me.Rows(i).Cells(e.ColumnIndex).Size.Width)
          End If
          Else
          Exit For
          End If
          Next  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2011-05-10 16:50 | 阿胡
          你好!可發一份源碼給我嗎?非常感謝!
          nineheads@tom.com
            回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2011-05-23 16:49 | 阿伍
          你好,自學很久了始終不入門,能給份源碼。非常感謝!郵箱:443272678@QQ.com  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2011-06-12 18:23 | acicd
          你好可能把源碼發給我嗎?
          acicd@sohu.com  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并[未登錄] 2012-11-23 16:55 | KK
          請問可以寄一份 VB 的源碼嗎?
          謝謝您~
          fwt0209@gmail.com  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2013-02-06 09:27 | icemna
          Me.RowMergeView1.MergeColumnNames = New List(Of String)
          For i = 1 To dt.Columns.Count
          Me.rowMergeView1.MergeColumnNames.Add("Column" & i)
          Next
          對MergeColumnNames賦值(Add)之前要實例化的。l
            回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2013-02-23 11:03 | 0514
          請問可以寄一份 VB 的源碼嗎?
          謝謝您~
          郵箱:431093685@QQ.com   回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2013-07-08 12:32 | billycwy
          您好,請問可以寄一份VB.net 的源碼嗎?
          萬分感謝
          謝謝您了
          郵箱:8230220@qq.com  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2013-07-29 19:24 | 芙蓉妮
          期盼許久了......
          原先是用vb做的系統,無法實現單元格合并問題,近期剛剛改學vb.net,看到樓主已經實現了此功能我欣喜若狂,希望能拜讀到樓主的源碼,萬分感謝
          frownies@139.com
            回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2013-10-30 17:10 | 112
          為什么我選中合并單元格的最后一行,合并單元格的內容就會消失  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2013-11-09 14:10 | Surfing
          可以寄一份vb.net源碼給我嗎?
          ms101690@pchome.com.tw  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2014-11-18 11:08 | uyfghfv
          你好,可以寄一份源碼給我嗎?keobo.wang@deltaww.com.cn  回復  更多評論
            
          # re: vb.net中dataGridView的單元格的合并 2015-08-28 09:07 | ヒツ
          合并的單元格無法選中,如何解決,還有我想在合并的單元個里繪checkbox怎么弄  回復  更多評論
            
          主站蜘蛛池模板: 张家港市| 兖州市| 土默特左旗| 三门县| 广元市| 思南县| 胶南市| 榆林市| 邵阳市| 克拉玛依市| 天门市| 扶风县| 湘西| 潞城市| 新干县| 临清市| 军事| 贡嘎县| 拜城县| 阿荣旗| 顺平县| 彩票| 聂拉木县| 迁西县| 巨鹿县| 丰原市| 息烽县| 紫金县| 南漳县| 正定县| 陕西省| 京山县| 新乐市| 仁化县| 阿拉善左旗| 子洲县| 沙河市| 宁阳县| 苍梧县| 大港区| 呼和浩特市|