亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現Dev Grid拖拽移動行的方法

2020-01-24 01:52:54
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現Dev Grid拖拽移動行的方法。分享給大家供大家參考。具體如下:

完整實例代碼點擊此處本站下載。
   
拖拽時帶行截圖效果

實現代碼如下:

/// <summary>/// 拖拽幫助類/// </summary>public static class DragHelper{  /// <summary>  /// BandedGridView 拖拽  /// </summary>  /// <param name="gvMain"></param>  public static void DragGridRow<T>(this BandedGridView gvMain)  {   // 拖拽遮罩控件   DragMaster dragMaster = new DragMaster();   // 當前拖拽行繪畫區域   Rectangle _DragRowRect = Rectangle.Empty;   GridControl gcMain = gvMain.GridControl;   GridHitInfo _DownHitInfo = null;   //表格屬性 允許拖拽   gcMain.AllowDrop = true;   gvMain.OptionsDetail.EnableMasterViewMode = false;   #region 將對象拖至邊界時發生 DragOver   gcMain.DragOver += delegate(object sender, System.Windows.Forms.DragEventArgs e)   {    if (e.Data.GetDataPresent(typeof(T)))     e.Effect = DragDropEffects.Move;    else     e.Effect = DragDropEffects.None;   };   #endregion   #region 拖拽完成時處理數據 DragDrop   gcMain.DragDrop += delegate(object sender, System.Windows.Forms.DragEventArgs e)   {    // 拖過來的新數據    T newRow = (T)e.Data.GetData(typeof(T));    // 原來在此坐標的數據    // e的坐標是相對于屏幕的    var clientPoint = gcMain.PointToClient(new Point(e.X, e.Y));    GridHitInfo hitInfo = gvMain.CalcHitInfo(new Point(clientPoint.X, clientPoint.Y));    var oldRow = (T)gvMain.GetRow(hitInfo.RowHandle);    // 如果相等則不處理    if (oldRow == null || newRow == null) return;    // 且目標位置不是最后一行的話要將所有序號重排    // 原來的行號    var oldIndex = _DownHitInfo.RowHandle;    // 新的行號    var newIndex = hitInfo.RowHandle;    BindingSource bs = (BindingSource)(gcMain.DataSource);    if (bs == null)     return;    bs.RemoveAt(oldIndex);    bs.Insert(oldIndex, oldRow);    bs.RemoveAt(newIndex);    bs.Insert(newIndex, newRow);    bs.ResetBindings(false);   };   #endregion   #region 鼠標按下 MouseDown   gcMain.MouseDown += delegate(object sender, MouseEventArgs e)   {    _DownHitInfo = null;    GridHitInfo hitInfo = gvMain.CalcHitInfo(new Point(e.X, e.Y));    if (Control.ModifierKeys != Keys.None) return;    if (e.Button == MouseButtons.Left && hitInfo.RowHandle >= 0)    {     // 禁用的Grid不支持拖拽     if (!gvMain.OptionsBehavior.Editable      || gvMain.OptionsBehavior.ReadOnly)      return;     // 只有點擊最前面才能拖拽     if (hitInfo.InRowCell)      return;     // 緩存     _DownHitInfo = hitInfo;    }   };   #endregion   #region 鼠標移動 MouseMove   gcMain.MouseMove += delegate(object sender, MouseEventArgs e)   {    if (e.Button == MouseButtons.Left)    {     if (_DownHitInfo != null)     {      Size dragSize = SystemInformation.DragSize;      // 偏離區域      Rectangle dragRect = new Rectangle(new Point(_DownHitInfo.HitPoint.X - dragSize.Width / 2, _DownHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize);      if (!dragRect.Contains(new Point(e.X, e.Y)))      {       // 屏幕坐標       var p = gcMain.PointToScreen(e.Location);       // 刷新是必須要的       gcMain.Refresh();       // 獲取當前行截圖       var bmp = GetDragRowImage(gcMain, _DownHitInfo, _DragRowRect);       Point offSetPoint = new Point(p.X + 1, p.Y - dragMaster.DragSize.Height / 2);       // 開始顯示拖拽遮罩       dragMaster.StartDrag(bmp, offSetPoint, DragDropEffects.Move);       // 獲取要拖拽的數據       object row = gvMain.GetRow(_DownHitInfo.RowHandle);       // 開始拖拽       gcMain.DoDragDrop(row, DragDropEffects.Move);       // 取消事件       DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = true;       // 清空緩存       _DownHitInfo = null;      }     }    }   };   #endregion   #region 在用鼠標拖動某項時發生,是否允許繼續拖放 QueryContinueDrag   gcMain.QueryContinueDrag += delegate(object sender, QueryContinueDragEventArgs e)   {    switch (e.Action)    {     case DragAction.Continue:      // 移動遮罩      Point offSetPoint = new Point(Cursor.Position.X + 1, Cursor.Position.Y - dragMaster.DragSize.Height / 2);      dragMaster.DoDrag(offSetPoint, DragDropEffects.Move, false);      break;     default:      // 清空      _DragRowRect = Rectangle.Empty;      // 停止拖動      dragMaster.EndDrag();      break;    }   };   #endregion   #region 點擊行頭移動行   gvMain.CustomDrawRowIndicator += delegate(object sender, RowIndicatorCustomDrawEventArgs e)   {    if (_DragRowRect == Rectangle.Empty && _DownHitInfo != null && _DownHitInfo.RowHandle == e.RowHandle)    {     _DragRowRect = e.Bounds;    }   };   #endregion  }  /// <summary>  /// GridView 拖拽  /// </summary>  /// <param name="gvMain"></param>  public static void DragGridRow<T>(this GridView gvMain)  {   // 拖拽遮罩控件   DragMaster dragMaster = new DragMaster();   // 當前拖拽行繪畫區域   Rectangle _DragRowRect = Rectangle.Empty;   GridControl gcMain = gvMain.GridControl;   GridHitInfo _DownHitInfo = null;   //表格屬性 允許拖拽   gcMain.AllowDrop = true;   gvMain.OptionsDetail.EnableMasterViewMode = false;   #region 將對象拖至邊界時發生 DragOver   gcMain.DragOver += delegate(object sender, System.Windows.Forms.DragEventArgs e)   {    if (e.Data.GetDataPresent(typeof(T)))     e.Effect = DragDropEffects.Move;    else     e.Effect = DragDropEffects.None;   };   #endregion   #region 拖拽完成時處理數據 DragDrop   gcMain.DragDrop += delegate(object sender, System.Windows.Forms.DragEventArgs e)   {    // 拖過來的新數據    T newRow = (T)e.Data.GetData(typeof(T));    // 原來在此坐標的數據    // e的坐標是相對于屏幕的    var clientPoint = gcMain.PointToClient(new Point(e.X, e.Y));    GridHitInfo hitInfo = gvMain.CalcHitInfo(new Point(clientPoint.X, clientPoint.Y));    var oldRow = (T)gvMain.GetRow(hitInfo.RowHandle);    // 如果相等則不處理    if (oldRow == null || newRow == null) return;    // 且目標位置不是最后一行的話要將所有序號重排    // 原來的行號    var oldIndex = _DownHitInfo.RowHandle;    // 新的行號    var newIndex = hitInfo.RowHandle;      BindingSource bs = (BindingSource)(gcMain.DataSource);    if (bs == null)     return;      bs.RemoveAt(oldIndex);    bs.Insert(oldIndex, oldRow);    bs.RemoveAt(newIndex);    bs.Insert(newIndex, newRow);    bs.ResetBindings(false);   };   #endregion   #region 鼠標按下 MouseDown   gcMain.MouseDown += delegate(object sender, MouseEventArgs e)   {    _DownHitInfo = null;    GridHitInfo hitInfo = gvMain.CalcHitInfo(new Point(e.X, e.Y));    if (Control.ModifierKeys != Keys.None) return;    if (e.Button == MouseButtons.Left && hitInfo.RowHandle >= 0)    {     // 禁用的Grid不支持拖拽     if (!gvMain.OptionsBehavior.Editable      || gvMain.OptionsBehavior.ReadOnly)      return;     // 只有點擊最前面才能拖拽     if (hitInfo.InRowCell)      return;     // 緩存     _DownHitInfo = hitInfo;    }   };   #endregion   #region 鼠標移動 MouseMove   gcMain.MouseMove += delegate(object sender, MouseEventArgs e)   {    if (e.Button == MouseButtons.Left)    {     if (_DownHitInfo != null)     {      Size dragSize = SystemInformation.DragSize;      // 偏離區域      Rectangle dragRect = new Rectangle(new Point(_DownHitInfo.HitPoint.X - dragSize.Width / 2, _DownHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize);        if (!dragRect.Contains(new Point(e.X, e.Y)))      {       // 屏幕坐標       var p = gcMain.PointToScreen(e.Location);       // 刷新是必須要的       gcMain.Refresh();       // 獲取當前行截圖       var bmp = GetDragRowImage(gcMain, _DownHitInfo, _DragRowRect);       Point offSetPoint = new Point(p.X + 1, p.Y - dragMaster.DragSize.Height / 2);       // 開始顯示拖拽遮罩       dragMaster.StartDrag(bmp, offSetPoint, DragDropEffects.Move);       // 獲取要拖拽的數據       object row = gvMain.GetRow(_DownHitInfo.RowHandle);       // 開始拖拽       gcMain.DoDragDrop(row, DragDropEffects.Move);       // 取消事件       DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = true;       // 清空緩存       _DownHitInfo = null;      }     }    }   };   #endregion   #region 在用鼠標拖動某項時發生,是否允許繼續拖放 QueryContinueDrag   gcMain.QueryContinueDrag += delegate(object sender, QueryContinueDragEventArgs e)   {    switch (e.Action)    {     case DragAction.Continue:      // 移動遮罩      Point offSetPoint = new Point(Cursor.Position.X + 1, Cursor.Position.Y - dragMaster.DragSize.Height / 2);      dragMaster.DoDrag(offSetPoint, DragDropEffects.Move, false);      break;     default:      // 清空      _DragRowRect = Rectangle.Empty;      // 停止拖動      dragMaster.EndDrag();      break;    }   };   #endregion   #region 點擊行頭移動行   gvMain.CustomDrawRowIndicator += delegate(object sender, RowIndicatorCustomDrawEventArgs e)   {    if (_DragRowRect == Rectangle.Empty && _DownHitInfo != null && _DownHitInfo.RowHandle == e.RowHandle)    {     _DragRowRect = e.Bounds;    }   };   #endregion   }  /// <summary>  /// 獲取拖拽截圖  /// </summary>  /// <param name="hitInfo"></param>  /// <param name="gcMain"></param>  /// <param name="dragRowRect"></param>  /// <returns></returns>  private static Bitmap GetDragRowImage(GridControl gcMain, GridHitInfo hitInfo, Rectangle dragRowRect)  {   // 截圖   var bmp = DevImageCapturer.GetControlBitmap(gcMain, null   , dragRowRect.Width + 1, dragRowRect.Top   , gcMain.Width - dragRowRect.Width - 4, dragRowRect.Height - 1);     using (Graphics g = Graphics.FromImage(bmp))   {    var p1 = new Point(1, 1);    var p2 = new Point(bmp.Width - 1, 1);    var p3 = new Point(1, bmp.Height - 2);    var p4 = new Point(bmp.Width - 1, bmp.Height - 2);    using (Pen pen = new Pen(gcMain.ForeColor))    {     g.DrawLine(pen, p1, p2);     g.DrawLine(pen, p1, p3);     g.DrawLine(pen, p2, p4);     g.DrawLine(pen, p3, p4);    }   }   return bmp;  }}/// <summary>/// 拖拽窗口/// </summary>public partial class DragWindow : DevExpress.Utils.Win.TopFormBase{  private Bitmap dragBitmap;  private bool dragging;  private Point hotSpot;  public static readonly Point InvisiblePoint = new Point(-100000, -100000);  public DragWindow()  {   hotSpot = Point.Empty;   dragging = false;   SetStyle(ControlStyles.Selectable, false);   this.Size = Size.Empty;   this.ShowInTaskbar = false;   Form prevActive = Form.ActiveForm;   InitializeComponent();  }  void ActivateForm(object sender, EventArgs e)  {   Form form = sender as Form;   if (form == null || !form.IsHandleCreated) return;   form.Activate();  }  public void MakeTopMost()  {   UpdateZOrder();  }  private void InitializeComponent()  {   this.StartPosition = FormStartPosition.Manual;   dragBitmap = null;   this.Enabled = false;   this.MinimumSize = Size.Empty;   this.Size = Size.Empty;   this.Location = InvisiblePoint;   this.Visible = false;   this.TabStop = false;   //this.Opacity = 0.7;// DevExpress.Utils.DragDrop.DragWindow.DefaultOpacity;  }  protected void InternalMoveBitmap(Point p)  {   //p.Offset(-hotSpot.X, -hotSpot.Y);   this.SuspendLayout();   this.Location = p;   this.ResumeLayout();  }  protected override void OnResize(System.EventArgs e)  {   base.OnResize(e);  }  public bool ShowDrag(Point p)  {   if (this.BackgroundImage == null) return false;   dragging = true;   Visible = true;   Refresh();   InternalMoveBitmap(p);   return true;  }  public bool MoveDrag(Point p)  {   if (!dragging) return false;   InternalMoveBitmap(p);   return true;  }  public bool HideDrag()  {   if (!dragging) return false;   Visible = false;   BackgroundImage = null;   dragging = false;   this.SuspendLayout();   this.Size = Size.Empty;   this.Location = InvisiblePoint;   this.ResumeLayout();   return true;  }  public Point HotSpot { get { return hotSpot; } set { hotSpot = value; } }  public Bitmap DragBitmap  {   get { return dragBitmap; }   set   {    this.BackgroundImage = value;    if (value == null)    {     HideDrag();    }    else     hotSpot = new Point(value.Size.Width / 2, value.Size.Height / 2);    dragBitmap = value;    Size = BackgroundImage.Size;   }  }}/// <summary>/// 截圖/// </summary>public class DevImageCapturer{  [System.Runtime.InteropServices.DllImport("USER32.dll")]  internal static extern IntPtr GetDC(IntPtr dc);  [System.Runtime.InteropServices.DllImport("USER32.dll")]  internal static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);  [System.Runtime.InteropServices.DllImport("USER32.dll")]  internal static extern IntPtr GetDesktopWindow();  [System.Runtime.InteropServices.DllImport("gdi32.dll")]  internal static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);  [System.Runtime.InteropServices.DllImport("gdi32.dll")]  internal static extern IntPtr CreateCompatibleDC(IntPtr hdc);  [System.Runtime.InteropServices.DllImport("gdi32.dll")]  internal static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);  [System.Runtime.InteropServices.DllImport("gdi32.dll")]  internal static extern bool DeleteObject(IntPtr hObject);  [System.Runtime.InteropServices.DllImport("gdi32.dll")]  internal static extern IntPtr SelectObject(IntPtr hdc, IntPtr obj);  [System.Runtime.InteropServices.DllImport("gdi32.dll")]  internal static extern IntPtr CreateSolidBrush(int color);  [System.Runtime.InteropServices.DllImport("gdi32.dll")]  internal static extern IntPtr CreatePatternBrush(IntPtr hBitmap);  /// <summary>  /// 獲取控件的截圖  /// </summary>  /// <param name="control">控件</param>  /// <param name="pattern">圖片</param>  /// <returns></returns>  public static Bitmap GetControlBitmap(Control control, Bitmap pattern)  {   int width = control.Width;   int height = control.Height;   if (control is Form)   {    width = control.ClientRectangle.Width;    height = control.ClientRectangle.Height;   }   IntPtr hdc = GetDC(control.Handle);   IntPtr compDC = CreateCompatibleDC(hdc);   IntPtr compHBmp = CreateCompatibleBitmap(hdc, width, height);   IntPtr prev = SelectObject(compDC, compHBmp);   IntPtr brush = IntPtr.Zero, prevBrush = IntPtr.Zero;   if (pattern != null)   {    brush = CreatePatternBrush(pattern.GetHbitmap());    prevBrush = SelectObject(compDC, brush);   }   Point pt = new Point(0, 0);   BitBlt(compDC, 0, 0, width, height, hdc, pt.X, pt.Y, 0x00C000CA);   SelectObject(compDC, prev);   if (prevBrush != IntPtr.Zero)    SelectObject(compDC, prevBrush);   ReleaseDC(control.Handle, hdc);   NativeMethods.DeleteDC(compDC);   Bitmap bmp = Bitmap.FromHbitmap(compHBmp);   DeleteObject(compHBmp);   if (brush != IntPtr.Zero)    DeleteObject(brush);   return bmp;  }  /// <summary>  /// 獲取控件的截圖  /// </summary>  /// <param name="control">控件</param>  /// <param name="pattern">圖片</param>  /// <param name="offSetX">X</param>  /// <param name="offSetY">Y</param>  /// <param name="width">寬</param>  /// <param name="height">高</param>  /// <returns></returns>  public static Bitmap GetControlBitmap(Control control, Bitmap pattern, int offSetX = 0, int offSetY = 0, int width = 0, int height = 0)  {   width = width == 0 ? control.Width : width;   height = height == 0 ? control.Height : height;   if (control is Form)   {    width = control.ClientRectangle.Width;    height = control.ClientRectangle.Height;   }   IntPtr hdc = GetDC(control.Handle);   IntPtr compDC = CreateCompatibleDC(hdc);   IntPtr compHBmp = CreateCompatibleBitmap(hdc, width, height);   IntPtr prev = SelectObject(compDC, compHBmp);   IntPtr brush = IntPtr.Zero, prevBrush = IntPtr.Zero;   if (pattern != null)   {    brush = CreatePatternBrush(pattern.GetHbitmap());    prevBrush = SelectObject(compDC, brush);   }   Point pt = new Point(offSetX, offSetY);   BitBlt(compDC, 0, 0, width, height, hdc, pt.X, pt.Y, 0x00C000CA);   SelectObject(compDC, prev);   if (prevBrush != IntPtr.Zero)    SelectObject(compDC, prevBrush);   ReleaseDC(control.Handle, hdc);   NativeMethods.DeleteDC(compDC);   Bitmap bmp = Bitmap.FromHbitmap(compHBmp);   DeleteObject(compHBmp);   if (brush != IntPtr.Zero)    DeleteObject(brush);   return bmp;  }} public class DragMaster {  [ThreadStatic]  static DragWindow dragWindow;  bool dragInProgress;  DragDropEffects effects;  DragDropEffects lastEffect;  static Cursor customizationCursor = null;  double _opacity = 0.7;    public double Opacity  {   get { return _opacity; }   set { _opacity = value; }  }  public DragMaster()  {   dragInProgress = false;   lastEffect = effects = DragDropEffects.None;  }    DragWindow DragWindow  {   get   {    if (dragWindow == null) dragWindow = new DragWindow() { Opacity = this.Opacity };    return dragWindow;   }  }  public DragDropEffects LastEffect  {   get { return lastEffect; }  }  public bool DragInProgress  {   get { return dragInProgress; }  }    /// <summary>  /// 繪制大小  /// </summary>  public Size DragSize  {   get   {    if (DragWindow.DragBitmap == null) return Size.Empty;    return DragWindow.DragBitmap.Size;   }  }  /// <summary>  /// 開始拖拽  /// </summary>  /// <param name="bmp"></param>  /// <param name="startPoint"></param>  /// <param name="effects"></param>  public void StartDrag(Bitmap bmp, Point startPoint, DragDropEffects effects)  {   StopDrag();   dragInProgress = true;   this.effects = effects;   lastEffect = effects;   DragWindow.MakeTopMost();   DragWindow.DragBitmap = bmp;   DragWindow.ShowDrag(startPoint);   SetDragCursor(effects);  }  /// <summary>  /// 停止拖拽  /// </summary>  protected void StopDrag()  {   dragInProgress = false;   lastEffect = effects = DragDropEffects.None;   DragWindow.HideDrag();  }  /// <summary>  /// 設置拖拽鼠標類型  /// </summary>  /// <param name="e"></param>  public void SetDragCursor(DragDropEffects e)  {   if (e == DragDropEffects.None)    Cursor.Current = CustomizationCursor;   else    Cursor.Current = Cursors.Default;  }  /// <summary>  /// 拖拽  /// </summary>  /// <param name="p"></param>  /// <param name="e"></param>  /// <param name="setCursor"></param>  public void DoDrag(Point p, DragDropEffects e, bool setCursor)  {   if (!dragInProgress) return;   lastEffect = e;   if (setCursor) SetDragCursor(e);   DragWindow.MoveDrag(p);  }  /// <summary>  /// 取消拖拽  /// </summary>  public void CancelDrag()  {   if (!dragInProgress) return;   StopDrag();  }  /// <summary>  /// 結束拖拽  /// </summary>  public void EndDrag()  {   if (!dragInProgress) return;   StopDrag();  }  /// <summary>  /// 自定義Cursor  /// </summary>  static Cursor CustomizationCursor  {   get   {    if (customizationCursor == null) customizationCursor = ResourceImageHelper.CreateCursorFromResources("DevExpress.XtraTreeList.Images.customization.cur", typeof(DragMaster).Assembly);    return customizationCursor;   }  }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品999| 国产精品福利网站| 成人在线国产精品| 亚洲aaa激情| 欧美黑人巨大精品一区二区| 日韩视频―中文字幕| 亚洲乱码av中文一区二区| 欧美第一淫aaasss性| 91超碰caoporn97人人| 久久久久久国产| 久久影视电视剧免费网站清宫辞电视| 成人激情视频在线观看| 国产丝袜一区二区三区| 中文字幕视频一区二区在线有码| 欧美精品在线第一页| 在线午夜精品自拍| 8x海外华人永久免费日韩内陆视频| 欧美电影在线观看| 久久全国免费视频| 97在线日本国产| 久久综合国产精品台湾中文娱乐网| 影音先锋欧美在线资源| 亚洲精品suv精品一区二区| 2019中文字幕在线观看| 欧美视频免费在线| 欧美性猛交xxxx黑人| 欧美成人三级视频网站| 国产精品午夜一区二区欲梦| 91亚洲va在线va天堂va国| 色先锋久久影院av| 欧美成人免费一级人片100| 久久精品视频一| 成人免费直播live| 日韩精品视频免费| 亚洲一级黄色片| 国产精品96久久久久久又黄又硬| 国产精品成人va在线观看| 国产一区视频在线播放| 久久99青青精品免费观看| 欧美日韩亚洲激情| 5252色成人免费视频| 性欧美xxxx视频在线观看| 欧美贵妇videos办公室| 国产成人精品久久二区二区| 国产在线观看一区二区三区| 精品毛片三在线观看| 懂色av影视一区二区三区| 91国语精品自产拍在线观看性色| 国内精品伊人久久| 最近2019中文字幕大全第二页| 精品女同一区二区三区在线播放| 国产成人久久精品| 久久亚洲精品小早川怜子66| 91丝袜美腿美女视频网站| 国产精品扒开腿做爽爽爽男男| 日韩在线小视频| 亚洲欧美在线免费观看| 久久久亚洲欧洲日产国码aⅴ| 北条麻妃久久精品| 性日韩欧美在线视频| 亚洲国产古装精品网站| 成人黄色免费看| 伊人精品在线观看| 中文字幕亚洲欧美| 国产精品一区av| 欧美色视频日本高清在线观看| 亚洲欧洲国产一区| 96国产粉嫩美女| 欧美性猛交xxxxx免费看| 国产精品久久9| 黄色91在线观看| 美女av一区二区| 国产精品欧美激情在线播放| 国产亚洲激情在线| 国产欧美久久久久久| 成人国产精品免费视频| 日韩成人中文字幕在线观看| 亚洲国产精品人人爽夜夜爽| 亚洲国产第一页| 欧美精品做受xxx性少妇| 色播久久人人爽人人爽人人片视av| 亚洲综合国产精品| 91精品视频一区| 亚洲一区二区在线| 欧美另类xxx| 亚洲精品在线91| 亚洲电影免费观看高清完整版在线观看| 亚洲成人三级在线| 最近2019免费中文字幕视频三| 神马国产精品影院av| 理论片在线不卡免费观看| 日韩免费在线视频| 韩国精品久久久999| 大伊人狠狠躁夜夜躁av一区| 国产精品入口免费视| 国产精品三级网站| 国产精品尤物福利片在线观看| 日韩激情av在线免费观看| 夜夜嗨av一区二区三区四区| 国产精品久久久久久久久借妻| 国产精品电影久久久久电影网| 日韩中文字幕亚洲| 中文字幕视频在线免费欧美日韩综合在线看| 欧美一区二区三区……| 久久精品国产91精品亚洲| 日韩欧美在线视频免费观看| 国产精品美腿一区在线看| 欧美大片免费看| 精品一区二区三区四区在线| 亚洲电影免费观看高清完整版在线| 97精品国产aⅴ7777| 深夜福利国产精品| 丝袜情趣国产精品| 日韩电影在线观看中文字幕| 亚洲一区二区三区乱码aⅴ蜜桃女| 国内成人精品一区| 国产成人精品av| 国产成人在线播放| 国模私拍视频一区| 国产亚洲精品美女久久久| 精品国产自在精品国产浪潮| 国产精品女人网站| 成人免费自拍视频| 欧美老肥婆性猛交视频| 久久久久在线观看| 亚洲国产成人av在线| 久久中文字幕视频| 国产精品久久视频| 国内精品久久影院| 精品国产欧美一区二区三区成人| 中文字幕欧美国内| 国产精品扒开腿做爽爽爽男男| 亚洲精品久久在线| 中文字幕日韩精品在线观看| 亚洲电影中文字幕| 青青草国产精品一区二区| 亚洲精品国精品久久99热一| 亚洲国产精品中文| 欧美精品午夜视频| 欧美午夜丰满在线18影院| 久久久亚洲成人| 日韩美女免费视频| 亚洲精品国偷自产在线99热| 亚洲美女av黄| 国产精品欧美日韩久久| 亚洲视频999| 亚洲片国产一区一级在线观看| 欧美日韩免费区域视频在线观看| 中文字幕av一区二区三区谷原希美| 不卡在线观看电视剧完整版| 久久免费视频在线| 51精品国产黑色丝袜高跟鞋| 中文字幕av一区中文字幕天堂| 国产综合色香蕉精品| 中文字幕日韩视频| 日韩中文在线中文网在线观看| 欧美日韩成人网| 国产手机视频精品| 欧美色欧美亚洲高清在线视频| 欧洲中文字幕国产精品| 欧美久久久精品| 亚洲视频一区二区三区| 欧美一级免费视频| 国产精品亚发布|