开发者

Unselect all rows on a DataGridView

Does anybody know how to unselect ALL the rows on a Windows Forms DataGridView control? By default, the first row is always selected...

Also, I don't want to allow any kind of selection, do you guys know any method to this?

I've already searched here but can't find...

Any help would be great!

Edit: Ok, I've found another way to unselect a row: on the DataGridViewRow.RowPostPaint() event, use the Selected property to unselect the row who sent 开发者_开发问答the event.

private void grid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    this.gridLogEntries.Rows[e.RowIndex].Selected = false;
}


I don't think there's a simple solution like DisableSelection = true.

Anyway, handling SelectionChanged event in the following way, should be enough:

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;
}

EDIT:

I slightly changed the code to avoid recursive calls of the method.


datagridview1.clearselection()

This will fix the problem in just one statement, no need to loop through


try disabling the tabstop option, this worked for me on a simular issue


Have you tried this?

myTable.CurrentRowIndex = -1;


You could try calling the unselect method for each selected row:

        for (int i = 0; i < bindingSource1.Count; i++)
        {
            if (myGrid.IsSelected(i))
            {
                myGrid.UnSelect(i);
            }
        }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜