我有一个使用ToolStrip的简单应用程序,ToolStripDropDownButton作为其subs,ToolStripMenuItem作为其子。
在ctor(或Load)中,我为toolstrip调用临时方法(如下所示)。
在一台计算机上,所有控件都着色:工具条,下拉按钮和项目。在另一台计算机上,只有工具条和下拉按钮被着色(项目没有着色)。
两台计算机都有Win 7 64,Net Framework 4.5。应用程序:C#中的Windows窗体。
有人可以解释它是如何可行的以及如何解决它?
void ColorSubItems(object obj, Color color) {
if(obj.GetType() == typeof(ToolStrip)) {
((ToolStrip)obj).BackColor = color;
foreach(ToolStripItem i in ((ToolStrip)obj).Items) {
i.BackColor = color;
ColorSubItems(i, color);
}
}
else if(obj.GetType() == typeof(ToolStripDropDownButton)) {
((ToolStripDropDownButton)obj).BackColor = color;
foreach(ToolStripDropDownItem i in
((ToolStripDropDownButton)obj).DropDownItems
) {
i.BackColor = color;
ColorSubItems(i, color);
}
}
else if(obj.GetType() == typeof(ToolStripMenuItem)) {
((ToolStripMenuItem)obj).BackColor = color;
foreach(
ToolStripMenuItem i in (
(ToolStripMenuItem)obj).DropDownItems
) {
i.BackColor = color;
ColorSubItems(i, color);
}
}
else {
((ToolStripItem)obj).BackColor = color;
}
}
答案 0 :(得分:0)
检查其中一台计算机是否更改了配色方案或是否安装了自定义主题。 WinForms已经过时并且依赖于环境,例如使用系统颜色和字体来构建它们的外观,你永远不能保证它们在所有计算机上看起来都一样,考虑迁移到WPF。