I'd like to use the DataGridView control as a list with columns. Sort of like ListView in Details mode but I want to keep the DataGridView flexibility.
ListView (with Details view and FullRowSelect enabled) highlights the whole line and shows the focus mark around the whole line:
DataGridView (with SelectionMode = FullRowSelect) displays focus mark only around a single cell:
So, does anyone know of some (ideally) easy way to make the DataGridView row selection look like the ListView one?
I'm not looking for a changed behaviour of the control - I only want it to look the same.
Ideally, without messing up with the methods that do the actual painting.
Put this code either into your form's constructor or set it in datagridview's Properties using the IDE.
dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgv.MultiSelect = false; dgv.RowPrePaint +=new DataGridViewRowPrePaintEventHandler(dgv_RowPrePaint);
Then paste the following event into the form code:
private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { e.PaintParts &= ~DataGridViewPaintParts.Focus; }
And it works! :-)
"dgv" is the DataGridView in question and "form" is the Form that contains it.
Note, that this soulution doesn't display the dotted rectangle around the whole row. Instead, it removes the focus dots entirely.
How about
SelectionMode == FullRowSelect
and
ReadOnly == true
It works for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With