<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-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 小言身寸 閱讀(12687) 評論(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怎么弄  回復  更多評論
      
    主站蜘蛛池模板: 亚洲AV成人精品日韩一区| 100000免费啪啪18免进| 国产成人精品日本亚洲18图| 亚洲日韩小电影在线观看| 日本一道一区二区免费看| h视频在线观看免费网站| a级黄色毛片免费播放视频| 边摸边吃奶边做爽免费视频99| 亚洲成a人片在线观看精品| 国产亚洲福利精品一区| 四虎影在线永久免费观看| 免费看国产精品3a黄的视频| 久久国产精品成人片免费| 久久不见久久见免费影院www日本 久久WWW免费人成—看片 | 国产91色综合久久免费| 怡红院免费的全部视频| 成人特级毛片69免费观看| 亚洲欧美日韩一区二区三区| 亚洲成av人片不卡无码| 亚洲精品线在线观看| 亚洲精品国偷自产在线| 久久久久亚洲精品无码网址| 国产中文字幕免费| 美女被免费视频网站a国产| 免费中文熟妇在线影片| 一二三四视频在线观看中文版免费 | 亚洲高清毛片一区二区| 中文文字幕文字幕亚洲色| 亚洲国产精品综合久久网各| 久久亚洲私人国产精品| 亚洲国产精品免费视频| 亚洲Aⅴ无码专区在线观看q| 亚洲AV无码国产丝袜在线观看 | 精品女同一区二区三区免费播放 | 一个人免费视频观看在线www| 国产免费区在线观看十分钟| 一区在线免费观看| 一级毛片人与动免费观看| 人成免费在线视频| 中文字幕视频免费在线观看| a级片在线免费看|