在Windows窗体上使用 System.Windows.Forms.TableLayoutPanel 控件时,它也会设置背景颜色: 216,216,216 ,即使我们将颜色更改为其他颜色,颜色似乎总是重置为 216,216,216 。
它在运行时完成,甚至在设计时也是如此。在设计期间,您可以更改颜色,并重新设置颜色更改,但如果您从表单设计器切换回原来,则会重置为 216,216,216 。< / p>
这是一个已知问题,或者我们如何避免这个问题?
注意:我们使用的是一个空白项目,使用.NET Framework 4(非客户端框架)的单表布局。
我们正在使用
C#详情
答案 0 :(得分:1)
我在其中一个项目中遇到了同样的问题。
我们通过继承MetroForm类并在OnLoad事件中添加一个函数来解决它,以循环遍历Panel类型的所有后代控件并更改BackColor属性。
示例:
public class CustomMetroForm : MetroForm
{
public CustomMetroForm()
{
this.Load += this.OnLoad;
}
public virtual void OnLoad(object sender, EventArgs eventArgs)
{
foreach (var descendant in this.Descendants<Panel>().Where(x => x.BackColor == Color.FromArgb(255, 216, 216, 216)))
{
descendant.BackColor = Color.White;
}
}
}
public static class ControlExtensions
{
public static IEnumerable<T> Descendants<T>(this Control control) where T : class
{
foreach (Control child in control.Controls)
{
var childOfT = child as T;
if (childOfT != null)
{
yield return childOfT;
}
if (child.HasChildren)
{
foreach (var descendant in Descendants<T>(child))
{
yield return descendant;
}
}
}
}
}
希望他们能尽快解决这个问题(从v10.4.0.2开始就没有修复)
答案 1 :(得分:0)
我对tablelayoutpanel没有这样的问题。但是对于您可以遵循的简短(可能是脏)方式,更改表单加载中的颜色值。它肯定会起作用。
答案 2 :(得分:0)
问题是由DevComponents套件内的Metro组件引起的。将表格布局添加到启用Metro的表单上的任何内容时,表格布局颜色将重置为样式管理员想要的任何内容,无论您将其设置为什么。
已经与开发人员打开了一个问题,看看是否可以修复,他们建议截至2011年10月21日,他们正在研究如何覆盖该问题。
答案 3 :(得分:0)
观察到的行为是设计的,样式改变了儿童控件的环境颜色,因此可以实现统一的外观和感觉。如果某些控件需要免除,请在此处说明如何完成:http://www.devcomponents.com/kb2/?p=1160#ambient