DataGridView在设计时未正确显示列标题

时间:2014-07-01 11:34:32

标签: c# vb.net winforms visual-studio datagridview

在GroupBox中使用DataGridView时,我发现了一些奇怪的行为。据我所知,DataGridView使用Ambient属性继承了here描述的样式,但是,我相信在设计时显示时会出现错误。以下是在Visual Studio 2013中重新创建的步骤(我在VS2008中也做了相同的结果):

创建新表单。创建一个GroupBox并将字体大小设置为22.在“组”框中创建一个DataGridView并添加三列(所有默认设置)。

DataGridView列标题将按预期继承GroupBox字体设置:

enter image description here

DataGridView1.EnableHeadersVisualStyles更改为False并修改DataGridView1.ColumnHeadersDefaultCellStyle。将Font设置为Mistral, 9.75pt。现在,在设计视图中以及运行应用程序时,表单应如下所示:

enter image description here

现在开始有趣了。保存并关闭Form1选项卡,然后双击解决方案资源管理器中的表单重新打开它。现在在设计视图中,列标题已更改,并且似乎继承了父GroupBox的字体设置:

enter image description here

但是,当运行应用程序时,标题会使用正确的字体设置:

enter image description here

这是设计视图呈现的错误还是我误解了继承规则?

1 个答案:

答案 0 :(得分:1)

当然看起来像是设计师的错误。我在VS2013中看到了相同的效果,即使Designer.cs文件保留以下行:

dataGridViewCellStyle1.Font = new System.Drawing.Font("Mistral", 9.75F,
    System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

我不确定为什么GroupBox内的控件表现那样,但有一种解决方法。

Panel内放置GroupBox,然后在DataGridView中放置Panel等控件。

然后,您可以在Font上设置Panel属性,并让它由DataGridView继承,或者您只需更改网格上的标题样式,它仍会正确显示关闭/重新打开Form

之后