我的表单中有两个datagridviews。用户可以选择多个单元格并将它们拖动到树视图节点。
以下是鼠标按下事件的代码:
private void datagridviews_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{ Console.WriteLine("mouse down right");
statuslabel.Text = "";
DataGridView.HitTestInfo hit = ((DataGridView)sender).HitTest(e.X, e.Y);
if (hit.Type == DataGridViewHitTestType.Cell)
{
var clickedCell = ((DataGridView)sender).Rows[hit.RowIndex].Cells[hit.ColumnIndex];
clickedCell.Selected = true;
}
List<string> cellcontents = new List<string>();
foreach (DataGridViewCell c in ((DataGridView)sender).SelectedCells)
{
cellcontents.Add((string)c.Value);
}
if (cellcontents.Count>0)
((DataGridView)sender).DoDragDrop(cellcontents, DragDropEffects.Copy);
}
else
Console.WriteLine("mouse down left");
}
拖放工作,但是当我在完成删除后立即单击原始数据网格视图中的单元格时,我必须单击两次才能选择单元格。
以下是事件的控制台日志 - 右键单击是拖放操作,然后正常的鼠标左键单击会触发鼠标按下事件,但不会触发单击单击事件,即使我单击一个单元格。
鼠标右下
鼠标向下左 鼠标向下左 单击单元格
为什么单击鼠标左键时第一次点击事件不会触发?