我在Windows窗体应用程序中使用DataGridView控件。当用户按住控件选择多个项目时,它可以正常工作。现在,当用户释放控件并单击(并按住鼠标左键)以开始拖动操作时,选择将改变。当用户按住鼠标左键时,如何停止选择清除?DataGridView鼠标选择
4
A
回答
3
我发现这个答案在Microsoft Forum
“为了拖放多行,将DataGridView.MultiSelect设置为true,并在DataGridView.DragDrop事件中,删除并插入DataGridView.SelectedRows集合中的所有行。”
这blog entry还展示了如何实现拖动和一个DataGridView
下降,但在我看来,你将不得不从DataGridView中继承并重写这些鼠标事件作为选择的变化总是会得到否则称呼。
- 保护虚拟无效 OnCellMouseDown(DataGridViewCellMouseEventArgs E);
- protected virtual void OnCellMouseUp(DataGridViewCellMouseEventArgs e);
然后,您可以拦截OnMouseDown中的SelectionChanged事件,并在OnMouseUp中进行选择。你将不得不保留下来的位置点,这样你可以选择正确的项目,如果它不是一个拖放。
您还必须在鼠标向下事件中维护所选行的列表,并且如果它变成拖放事件,则拖动所有这些选定行并在鼠标上向上选择它们。
并且不要忘记在鼠标向上事件中清除所选行的列表/副本。
1
好问题。虽然这可能不是那么简单,因为你可能一直希望的答案,它应该给你如何去解决你的问题的一些很好的启示: http://www.codeproject.com/KB/cpp/DataGridView_Drag-n-Drop.aspx
0
我发现了一种有用的技术。在选择最后一个单元格后(使用Ctrl或Shift键),在释放鼠标键之前开始拖动,选择内容不会改变。然后在下拉列表中,您可以使用以下方法获取所选单元格的列表:
private SC.ArrayList selectedCells()
{
SC.ArrayList cellsList = new SC.ArrayList();
Int32 selectedCellCount = dataViewImages.GetCellCount(DataGridViewElementStates.Selected);
if (selectedCellCount > 0)
{
for (int i = 0;i < selectedCellCount; i++) {
int cell = dataViewImages.SelectedCells[i].RowIndex*ShowImages.NumColumnsForWidth() + dataViewImages.SelectedCells[i].ColumnIndex;
cellsList.Add(cell);
}
cellsList.Sort();
return cellsList;
}
else
return null;
}
相关问题
- 1. 用鼠标右键单击以选择datagridview行
- 2. JTree鼠标释放选择
- 3. 使用鼠标滚动DataGridView
- 4. 选择datagridview
- 5. DataGridView选择行
- 6. 鼠标光标默认选择文本?
- 7. jQuery的:的mouseenter,鼠标悬停,鼠标离开,鼠标移出上选择
- 8. 通过DataGridView列标题检测鼠标
- 9. vb.net/DataGridView的选择?
- 10. Powershell:选择DataGridView行
- 11. 选择上的DataGridView
- 12. DataGridView复选框选择
- 13. 不能用鼠标拖动jcrop选择
- 14. 用鼠标检测旧值的选择
- 15. TextField() - 如何防止鼠标选择
- 16. 使用鼠标选择顶点JOGL
- 17. 鼠标上没有高亮选择?
- 18. Ajax自动删除鼠标选择
- 19. 用鼠标选择对象 - Three.js
- 20. 的mouseenter鼠标离开和选择
- 21. 的JavaScript/AJAX鼠标选择对象
- 22. 如何模拟鼠标文本选择?
- 23. Silverlight RichTextBox禁用鼠标选择
- 24. WPF listbox在鼠标上选择项目
- 25. 捕获用鼠标选择的文本
- 26. opengl用鼠标选择球体
- 27. 切换鼠标点击可选择
- 28. 在QMainWindow中选择性跟踪鼠标
- 29. DataGridView C#窗口应用程序(如果鼠标点击列标题,第一行不选择复选框)
- 30. 如何关闭选择的鼠标选择?
我昨天看到那篇文章...我希望在“单击”而不是“鼠标按下”时发生选择, 。我已经实现了拖放功能,但我只是试图修复它,以便用户在拖动之前选择最后一个项目时不必按住鼠标按钮... – joek1975 2008-10-10 14:59:19