.NET DataGridView: Remove "current row" black triangle
Triangle problem , it's simple ,put
dgv_Products.Rows[xval].Selected = true;
dgv_Products.CurrentCell = dgv_Products.Rows[xval].Cells[0];
that is make current cell property to the cell zero of current selected row.( Tested working for dgv_Products.MultiSelect = false ; )
Set RowHeadersVisible
to false
.
A very simple solution is to set the row height to 16 pixels or less. This disables all icons in the row header cell.
dataGridView1.RowTemplate.Height = 16;
If you want to keep the row headers rather than hide them, then you can use the cell padding to push the triangle out of sight:
this.dataGridView1.RowHeadersDefaultCellStyle.Padding = new Padding(this.dataGridView1.RowHeadersWidth);
If you are using row header text and want keep that visible you need to use some custom painting - thankfully very simple. After the above code, simply attach to the RowPostPaint event as shown below:
dataGridView1.RowPostPaint += new DataGridViewRowPostPaintEventHandler(dataGridView1_RowPostPaint);
And in the RowPostPaint method:
void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { object o = dataGridView1.Rows[e.RowIndex].HeaderCell.Value; e.Graphics.DrawString( o != null ? o.ToString() : "", dataGridView1.Font, Brushes.Black, new PointF((float)e.RowBounds.Left + 2, (float)e.RowBounds.Top + 4)); }
As Dan Neely points out the use of
Brushes.Black
above will overwrite any existing changes, so it is better for the brush to use:new SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor)