DataGridView有好几种选择模式:
CellSelect: 只支持单元格选取, 不能整行或者整列选取
FullRowSelect: 只能整行选取
FullColumnSelect: 只能整列选取
RowHeaderSelect: 同时支持整行选取和单元格选取 (等于 CellSelect + FullRowSelect)
ColumnHeaderSelect: 同时支持整列选取和单元格选取 (等于Cell Select + FullColumnSelect)
这些选择方式已经能满足大部分的引用场景,但是有一种场景不能满足,就是我们有时候需要同时支持单元格选取,整行和整列选取,但是没有对应的模式可以用,不过我们可以自己加几行代码实现。
方法:在鼠标点击RowHeader的时候切换到RowHeaderSelect模式,在鼠标点击ColumnHeader的时候在切换到ColumnHeaderSelect
事件:RowHeaderMoseClick() 和 ColumnHeaderMouseClick()
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
dgv.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;
dgv.Rows[e.RowIndex].Selected = true;
}
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
dgv.SelectionMode = DataGridViewSelectionMode.ColumnHeaderSelect;
dgv.Columns[e.ColumnIndex].Selected = true;
}