有人知道如何取消选择Windows窗体DataGridView控件上的所有行吗?默认情况下,始终选择第一行...
另外,我不想允许任何选择,你们知道任何方法吗?
我已经在这里搜索但找不到......
任何帮助都会很棒!
修改
好的,我找到了另一种取消选择行的方法:在DataGridViewRow.RowPostPaint()
事件上,使用Selected
属性取消选择发送事件的行。
private void grid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
this.gridLogEntries.Rows[e.RowIndex].Selected = false;
}
答案 0 :(得分:2)
我认为没有像DisableSelection = true
这样的简单解决方案。
无论如何,以下列方式处理SelectionChanged
事件应该足够了:
private bool skipEvents;
void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (skipEvents)
return;
skipEvents = true;
// disable cell selection
foreach (DataGridViewCell cell in this.dataGridView1.SelectedCells)
cell.Selected = false;
// disable row selection
foreach (DataGridViewRow row in this.dataGridView1.SelectedRows)
row.Selected = false;
// disable column selection
foreach (DataGridViewColumn col in this.dataGridView1.SelectedColumns)
col.Selected = false;
skipEvents = false;
}
修改强>
我稍微更改了代码以避免对方法进行递归调用。
答案 1 :(得分:1)
datagridview1.clearselection()
这将只在一个语句中解决问题,无需循环
答案 2 :(得分:1)
尝试禁用制表位选项,这对我来说也适用于类似的问题
答案 3 :(得分:0)
你试过这个吗?
myTable.CurrentRowIndex = -1;
答案 4 :(得分:0)
您可以尝试为每个选定的行调用取消选择方法:
for (int i = 0; i < bindingSource1.Count; i++)
{
if (myGrid.IsSelected(i))
{
myGrid.UnSelect(i);
}
}