我正在尝试更改文本对齐方式和DataGridView的字体大小。所有列都是在运行时以编程方式创建的。这是代码..
private void LoadData()
{
dgvBreakDowns.ColumnCount = 5;
dgvBreakDowns.Columns[0].Name = "Breakdown No";
dgvBreakDowns.Columns[1].Name = "Breakdown Type";
dgvBreakDowns.Columns[2].Name = "Machine Type";
dgvBreakDowns.Columns[3].Name = "Date";
dgvBreakDowns.Columns[4].Name = "Completed";
dgvBreakDowns.Columns[4].Visible = false;
foreach (DataGridViewHeaderCell header in dgvBreakDowns.Rows)
{
header.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
header.Style.Font = new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Pixel);
}
}
在Form的构造函数中调用此LoadData()
方法。列已创建,但其标题更改不适用。
我认为这是因为我的循环中有一个缺陷foreach (DataGridViewHeaderCell header in dgvBreakDowns.Rows)?
我不确定。我尝试将其更改为dgvBreakDowns.Columns
并获得InvalidCastException。如何选择标题单元格以应用这些更改?
我有另一个小问题。当我运行程序时,它看起来像这样。
请注意,默认情况下会选择第一个单元格,因此它显示为蓝色。当然它不会影响任何东西,但它看起来有点丑陋和不整洁。有可能阻止它选择那样的Cell吗?
答案 0 :(得分:37)
试试这个(注意我在这里使用的是Columns而不是Rows):
foreach(DataGridViewColumn col in dgvBreakDowns.Columns)
{
col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
col.HeaderCell.Style.Font = new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Pixel);
}
至于取消选择单元格,请尝试dgvBreakDowns.ClearSelection()
答案 1 :(得分:5)
或者只是试试这个:
dgvBreakDowns.Columns[4].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
答案 2 :(得分:1)
您可以使用带有 ColumnHeadersDefaultCellStyle.Alignment
的 MiddleCenter
作为其值。检查下面的代码:
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
答案 3 :(得分:0)
仅供参考;为了使控件正确显示自定义样式,需要考虑一些因素。 在这种情况下有关列标题;但这些确实适用于进一步的自定义:
确保在控件可见后应用所有自定义样式;您可以使用“ DataGridView_VisibleChanged ”事件。
DataGridView可见更改事件
/// <summary> Occurrs whenever the Control gets visible. </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataGridView_VisibleChanged(object sender, EventArgs e)
{
if (dataGridView.Visible)
{
DataGridView_AutoSizeColumn();
DataGridView_CentreHeaders();
// Etc...
}
}
标题列AutoSizeMode
private void DataGridView_AutoSize()
{
var col = dataGridView.Columns;
for (int i = 0; i < col.Count; i++)
{
if (i == 0) { col[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
if (i == 1) { col[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
// Etc...
}
}
中心标题列文本和设置字体
/// <summary> Centre Columns Headers. </summary>
private void DataGridView_CentreHeaders()
{
// Centre Column Cells Content
dataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
// Centre (Column and Row) Headers
dataGridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
// Set Font
dataGridView.ColumnHeadersDefaultCellStyle.Font = new Font("Arial", 11F, FontStyle.Regular, GraphicsUnit.Pixel);
}