[英]Unselect all rows on a DataGridView
有谁知道如何取消选择Windows窗体DataGridView控件上的所有行? 默认情况下,始终选择第一行...
另外,我不想允许任何选择,你们知道任何方法吗?
我已经在这里搜索但找不到......
任何帮助都会很棒!
编辑:好的,我找到了另一种取消选择行的方法:在DataGridViewRow.RowPostPaint()
事件上,使用Selected
属性取消选择发送事件的行。
private void grid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
this.gridLogEntries.Rows[e.RowIndex].Selected = false;
}
我认为没有像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;
}
编辑:
我略微更改了代码以避免方法的递归调用。
datagridview1.clearselection()
这将只在一个语句中解决问题,无需循环
尝试禁用tabstop选项,这对我来说是一个类似的问题
你试过这个吗?
myTable.CurrentRowIndex = -1;
您可以尝试为每个选定的行调用取消选择方法:
for (int i = 0; i < bindingSource1.Count; i++)
{
if (myGrid.IsSelected(i))
{
myGrid.UnSelect(i);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.