2013-02-09 89 views
1

我有与下列事件的WinForms DataGridView控件拖动“行”出来的DataGrid:的DataGridView CellDrag太敏感

private void gridOperations_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if ((e.Button & MouseButtons.Left) == MouseButtons.Left) 
     { 

      if (Math.Abs(e.X - mouseDownPos.X) >= SystemInformation.DoubleClickSize.Width || Math.Abs(e.Y - mouseDownPos.Y) >= SystemInformation.DoubleClickSize.Height) 
      { 
       string[] filesToDrag = { "tmp/generated.log" }; 
       gridOperations.DoDragDrop(new DataObject(DataFormats.FileDrop, filesToDrag), DragDropEffects.Copy); 
      } 
     } 
    } 

的问题是我也有datagridview的单击和双击事件,双点击事件几乎从来没有得到执行,除非我点击时根本不移动鼠标。我怎么添加一个'thershold',这样如果我按住鼠标并拖动单元格3个像素,那么它会触发gridOperations.DoDragDrop?谢谢!

回答

1

尝试使用整数计数器。 每次事件被触发,你递增INT,如果它是你到达你treshold执行代码的其余部分,其重置为0。

,如:

private int thCount = 0; 
    private void gridOperations_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if ((e.Button & MouseButtons.Left) == MouseButtons.Left && thCount==5) 
     { 
      //... 
      thCount = 0; 
     } 
     else 
     { 
      thCount++; 
     } 
    } 

希望我可以帮助你

+0

非常感谢,完美的工作! – Kristian 2013-02-11 12:02:28