Remove blue colored row from DataGridView WinForms

后端 未结 5 786
有刺的猬
有刺的猬 2020-12-21 17:09

When I fill a DataGridView row by row (calling it\'s add function), the top row gets blue colored. It\'s not selected because I tried ClearSelection() also but it didnt work

相关标签:
5条回答
  • 2020-12-21 17:33

    In Form.Shown Event Just do a:

    dataGridView1.ClearSelection();
    dataGridView1.CurrentCell = null;
    
    0 讨论(0)
  • 2020-12-21 17:36

    To achieve this along with the ClearSelection you will need to set one more property

    Try this in the DataBindingComplete

    dataGridView1.ClearSelection();
    dataGridView1.CurrentCell = null;
    

    EDIT

    Based on your comments you can modify the code as

    if (e.KeyCode == Keys.Up && dataGridView1.CurrentCell.RowIndex == 0)
    {                   
         this.ActiveControl = textBoxPartySearch;
         dataGridView1.Refresh();
         dataGridView1.ClearSelection();
         dataGridView1.CurrentCell = null;
         e.Handled = true;
    }
    
    0 讨论(0)
  • 2020-12-21 17:37

    I tried the above methods but nothing worked for me.

    Finally, I just decided to set the default colors for selected cells to be the same as non-selected cells.

    Then, in the cell click method, I set them back. That way nothing appears selected until its clicked, which was sufficient for my application. Here's the code I used in the click method to set everything back to normal:

    dataGridView.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight;
    dataGridView.DefaultCellStyle.SelectionForeColor = SystemColors.Window;
    

    Annoyingly, the ClearSelection method actually works just fine if I put it in a button, but if I create the control which contains the datagrid, load some data into it, and then try to clear it right then, it doesn't work. I wish I knew why...

    0 讨论(0)
  • 2020-12-21 17:39

    After three hours of troubleshooting this, I've figured it out: Your DataGridView needs to be displayed on the screen before calling dataGridView.ClearSelection().

    How I know this works:

    I have two DataGridViews, each in a different panel. Only one panel is visible at a time. In the panel that's initially visible, the DataGridView has never ignored my call to ClearSelection(), so I've never seen a row selected right away.

    I used to populate the other DataGridView and clear its selection before showing the panel that contains it, but that top row was always still highlighted. I changed my code to display the other panel before clearing the DataGridView's selection, and the call to ClearSelection() worked as it should.

    0 讨论(0)
  • 2020-12-21 17:45

    Try adding ClearSelection() to VisibleChanged event as follows:

    private void datagridview1_VisibleChanged(object sender, EventArgs e)
    {
    datagridview1.ClearSelection();
    }
    
    0 讨论(0)
提交回复
热议问题