在GroupBox中使用DataGridView时,我发现了一些奇怪的行为。据我所知,DataGridView使用Ambient属性继承了here描述的样式,但是,我相信在设计时显示时会出现错误。以下是在Visual Studio 2013中重新创建的步骤(我在VS2008中也做了相同的结果):
创建新表单。创建一个GroupBox并将字体大小设置为22.在“组”框中创建一个DataGridView并添加三列(所有默认设置)。
DataGridView列标题将按预期继承GroupBox字体设置:
将DataGridView1.EnableHeadersVisualStyles
更改为False
并修改DataGridView1.ColumnHeadersDefaultCellStyle
。将Font
设置为Mistral, 9.75pt
。现在,在设计视图中以及运行应用程序时,表单应如下所示:
现在开始有趣了。保存并关闭Form1选项卡,然后双击解决方案资源管理器中的表单重新打开它。现在在设计视图中,列标题已更改,并且似乎继承了父GroupBox的字体设置:
但是,当运行应用程序时,标题会使用正确的字体设置:
这是设计视图呈现的错误还是我误解了继承规则?
答案 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
。