【发布时间】:2014-03-10 15:30:39
【问题描述】:
所以我到处搜索试图找到我的问题的答案,但每个人似乎都可以接受默认选择单元格的方式(在一个框中)。
我正在使用十六进制编辑器,目前将 SelectionMode 设置为默认 RowHeaderSelect 并将 MultiSelect 设置为 true。 我的问题是,当您单击一个单元格并拖动选择时,它会选择一个框形的单元格(如 excel)。这不是我需要它来选择单元格的方式。
我目前通过处理以下事件解决了这个问题,CellMouseDown、CellMouseEnter、CellMouseUp 和 MouseUp。 这为我提供了我正在寻找的选择,但默认框选择样式在拖动选择期间仍然存在。
此代码示例发生在 CellMouseUp 上,并提供了我正在寻找的选择样式。第一张照片是运行下面的代码 (CellMouseUp) 后我的选择的样子。第二张图片是您拖动时发生的情况(下面的代码在 CellMouseEnter 上运行,也可以在拖动时自定义选择),但它会产生这种取消选择整个列的视觉错误,因为它超出了默认选择框样式(excel 样式)。
编辑:在鼠标向上和鼠标向下发生后澄清选择工作 ( dgvMainBinary.ClearSelection() 然后代码如下) 这是在拖动过程中发生的视觉错误。我唯一能想到的是在我的 CellMouseEnter 事件之后运行的默认框选择模式。
任何帮助将不胜感激,谢谢。
for (int row = startY; row <= endY; row++)
{
int startColumn = 0;
int endColumn = 15;
if (row == startY)
{
startColumn = startX;
if (startY == endY)
endColumn = endX;
}
else if (row == endY)
{
endColumn = (endX < 16)?endX:15;
}
for (int column = startColumn; column <= endColumn; column++)
{
dgvMainBinary.Rows[row].Cells[column].Selected = true;
}
}
【问题讨论】:
标签: c# winforms datagridview