我正在寻找一种在DataGridView-Control中启用多行选择但禁用多单元格选择的方法。
到目前为止我尝试过:
用于导出功能:用户应该能够将选定的行导出到文件中,但通常他不能选择多个单元格(用于复制和粘贴等)。
此致
INNO
----- [更新] -----
这是我的实施。工作正常(注释为紧凑性而删除):
using System.Windows.Forms;
namespace YourAmazingNamespace
{
public partial class SpecialSelectDataGridView: DataGridView
{
public SpecialSelectDataGridView()
{
InitializeComponent();
}
protected override void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
{
ResetSelectedCells();
base.SetSelectedCellCore(columnIndex, rowIndex, selected);
}
void ResetSelectedCells()
{
foreach (DataGridViewCell cell in SelectedCells) {
base.SetSelectedCellCore(cell.ColumnIndex, cell.RowIndex, false);
}
}
}
}
通过MultiSelect = true(默认值)选择多行,并在选择新的单元之前通过调用ResetSelectedCells()重置当前选定的单元格。
HTH,谢谢和问候,
INNO
答案 0 :(得分:1)
您可以覆盖SetSelectedRowCore或SetSelectedCelCore并执行自定义选择。
MSDN Quote:
DataGridView控件使用它 方法何时改变 细胞的选择状态。该 选择状态无变化 到当前的SelectionMode属性 价值,而不改变 CurrentCell属性值。这是 当你想要实现你的时候很有用 自己的选择模式
当然,这意味着您必须使用派生的数据网格而不是标准数据网格。