【问题】
已经可以实现自动添加行号了:
【已解决】C#的DataGridView中自动在行首添加行号
但是却发现,当行号超过10,那么只有整数位可以显示:
而实际上对应的数据已经是OK的,即11,12,13,。。。
此处想要实现自动对齐。
使得可以自动显示完整的行号。
【解决过程】
1.参考:
C#中关于DataGridView行和列的背景色-前景色设置
去试试:
dgvSearchResult.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
结果还是不行,超过10的数字,还是显示只整数,不显示个数位。
2.也去参考了:
DataGridView.RowHeadersDefaultCellStyle 属性
再去试试:
dgvSearchResult.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
看看效果。
还是不行。
3.后来结果是:
对于代码:
//DataGridView init
dgvSearchResult.ColumnCount = 13;
//dgvSearchResult.Rows.Add();
//(1)title
dgvSearchResult.Columns[0].HeaderText = "Title";
//(2)seller rating ( based on 1-100% format )
dgvSearchResult.Columns[1].HeaderText = "Seller Rating";
//(3)estimated delivery ( based on 24 hours - 7days format )
dgvSearchResult.Columns[2].HeaderText = "Estimated Delivery";
//(4)gig rating ( based on 1-100% )
dgvSearchResult.Columns[3].HeaderText = "Gig Rating";
//(5)orders in que ( based on 0-9999 format )
dgvSearchResult.Columns[4].HeaderText = "Orders in Queue";
//(6)level of the seller ( 1-3 )
dgvSearchResult.Columns[5].HeaderText = "Seller Level";
//(7)haz video ( yes or no )
dgvSearchResult.Columns[6].HeaderText = "Has Video";
//(8)express gigs (yes or no )
dgvSearchResult.Columns[7].HeaderText = "Is Express Gig";
//(9)country flag ( display county flag )
dgvSearchResult.Columns[8].HeaderText = "Country Flag";
//(10)+ve reviews and -ve reviews ( based on 1-9999 )
dgvSearchResult.Columns[9].HeaderText = "Positive Reviews";
dgvSearchResult.Columns[10].HeaderText = "Negative Reviews";
//(11)top rated seller ( yes or no )
dgvSearchResult.Columns[11].HeaderText = "Is Top Rated Seller";
//(12)gig url
dgvSearchResult.Columns[12].HeaderText = "Gig Url";
//dgvSearchResult.Rows.Insert(0, "one", "two", "three", "four");
dgvSearchResult.Rows[dgvSearchResult.Rows.Count - 1].Selected = true;
dgvSearchResult.FirstDisplayedScrollingRowIndex = dgvSearchResult.Rows.Count - 1;
dgvSearchResult.CurrentRow.HeaderCell.Value = String.Format("{0}", dgvSearchResult.CurrentRow.Index + 1);
dgvSearchResult.RowHeadersWidth = 200;
dgvSearchResult.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgvSearchResult.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;调试时,其中的:
dgvSearchResult.RowHeadersWidth = 200;
dgvSearchResult.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgvSearchResult.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;却无法执行到,直接就被忽略了。
看起来,感觉像是编译器自动优化掉了?
但是结果,改为:
//DataGridView init
dgvSearchResult.ColumnCount = 13;
dgvSearchResult.RowHeadersWidth = 200;
dgvSearchResult.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgvSearchResult.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
//dgvSearchResult.Rows.Add();
//(1)title
dgvSearchResult.Columns[0].HeaderText = "Title";
//(2)seller rating ( based on 1-100% format )
dgvSearchResult.Columns[1].HeaderText = "Seller Rating";
//(3)estimated delivery ( based on 24 hours - 7days format )
dgvSearchResult.Columns[2].HeaderText = "Estimated Delivery";
//(4)gig rating ( based on 1-100% )
dgvSearchResult.Columns[3].HeaderText = "Gig Rating";
//(5)orders in que ( based on 0-9999 format )
dgvSearchResult.Columns[4].HeaderText = "Orders in Queue";
//(6)level of the seller ( 1-3 )
dgvSearchResult.Columns[5].HeaderText = "Seller Level";
//(7)haz video ( yes or no )
dgvSearchResult.Columns[6].HeaderText = "Has Video";
//(8)express gigs (yes or no )
dgvSearchResult.Columns[7].HeaderText = "Is Express Gig";
//(9)country flag ( display county flag )
dgvSearchResult.Columns[8].HeaderText = "Country Flag";
//(10)+ve reviews and -ve reviews ( based on 1-9999 )
dgvSearchResult.Columns[9].HeaderText = "Positive Reviews";
dgvSearchResult.Columns[10].HeaderText = "Negative Reviews";
//(11)top rated seller ( yes or no )
dgvSearchResult.Columns[11].HeaderText = "Is Top Rated Seller";
//(12)gig url
dgvSearchResult.Columns[12].HeaderText = "Gig Url";
//dgvSearchResult.Rows.Insert(0, "one", "two", "three", "four");
dgvSearchResult.Rows[dgvSearchResult.Rows.Count - 1].Selected = true;
dgvSearchResult.FirstDisplayedScrollingRowIndex = dgvSearchResult.Rows.Count - 1;
dgvSearchResult.CurrentRow.HeaderCell.Value = String.Format("{0}", dgvSearchResult.CurrentRow.Index + 1);却又可以执行到上述代码了。
然后对应的可以实现所需的效果了:
【总结】
想要针对DataGridView的row的header设置对齐等属性。
好像需要在DataGridView的初始化最开始的部分,去添加代码才可以生效的。
对应代码为:
dgvSearchResult.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
如果想要行首自动缩放宽度,则再加上:
dgvSearchResult.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
注意:
1. 更多初始化的和其他设置,还是有必要参考官网的示例代码才好:
DataGridView.ColumnHeadersDefaultCellStyle Property
2.对于自动缩放后,所添加出来的空余部分(即行首的列宽,加了多余的空格,导致太宽了),貌似无法消除:
Datagridview headerText alignment padding on the right or center
转载请注明:在路上 » 【已解决】设置C#的DataGridView中的行首的对齐方式