c# - C# Winform 在子窗体中显示不需要的背景颜色
问题描述
我不知道为什么我的应用程序显示白色背景。无论是父母还是孩子,我都没有以任何形式设置任何白色背景。我已经尝试了一切并将每个面板的颜色设置为透明,但白色仍然存在。
请看下图,我在蓝色标记中标记了白色。
我正在使用 .Net Framework 4.7 并将 Guna2 Framework 用于 UI 组件。
我正在使用 Dock 属性进行响应
我为每个菜单面板创建了不同的表单,只要单击菜单面板,它的表单就会显示在我面临与白色相关的问题的区域中。
我有一个父/启动表单,其中有多个菜单面板、标题标题和一个名为子面板的主面板。
子面板是我将相应表单添加到面板控件并显示它的面板。
我总是将 BoarderStyle 属性设置为 None 在所有形式中。
我试图将边距和填充 0 放在任何地方,但它仍然显示白色。
这是将子窗体显示到父窗体的子面板中的方法
#region Show Child Form
public static void ShowChildForm(object FormObject, Panel childPanel, string ArchiveBasePath = null)
{
try
{
var newForm = FormObject as Form;
if (ArchiveBasePath != null)
{
var isDark = FileEncrypt.GetArchiveData<bool>(ArchiveBasePath + @"\" + ColorTheme.Archive_ThemeSetting);
if (isDark)
ColorTheme.ChangeTheme(new ColorScheme(true), newForm.Controls);
else // Dark Mode Disabled
ColorTheme.ChangeTheme(new ColorScheme(false), newForm.Controls);
}
if (!childPanel.Contains(newForm))
{
newForm.TopLevel = false;
newForm.Dock = DockStyle.Fill;
newForm.Padding = new Padding(0,0,0,0);
if (childPanel.Controls.Count > 0)
childPanel.Controls.RemoveAt(0);
childPanel.Controls.Add(newForm);
childPanel.Tag = newForm;
newForm.Show();
}
}
catch (Exception) { }
}
#endregion
这是用于启用/禁用暗模式的 ColorTheme 类
public class ColorTheme
{
public static string Archive_ThemeSetting = "ThemeSetting.dat";
public static string ColorChangeTag = "ColorChange";
public static string ColorChangeLight = "ColorChangeLight";
public static string ColorLabel = "ColorLabel";
public static void ChangeTheme(ColorScheme color, Control.ControlCollection container)
{
foreach (Control component in container)
{
if (component is Guna2ShadowPanel)
{
ChangeTheme(color, component.Controls);
if (component.Tag == ColorChangeTag)
{
//((Guna2ShadowPanel)component).BackColor = ColorTranslator.FromHtml(color.MainPanelColor);
((Guna2ShadowPanel)component).FillColor = ColorTranslator.FromHtml(color.MainPanelColor);
//component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
else if (component.Tag == ColorChangeLight)
{
//((Guna2ShadowPanel)component).BackColor = ColorTranslator.FromHtml(color.ChildPanelColor);
((Guna2ShadowPanel)component).FillColor = ColorTranslator.FromHtml(color.ChildPanelColor);
}
component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
else if (component is Guna2Panel)
{
ChangeTheme(color, component.Controls);
if (component.Tag == ColorChangeTag)
{
//((Guna2Panel)component).BackColor = ColorTranslator.FromHtml(color.MainPanelColor);
((Guna2Panel)component).FillColor = ColorTranslator.FromHtml(color.MainPanelColor);
}
else if (component.Tag == ColorChangeLight)
{
//((Guna2Panel)component).BackColor = ColorTranslator.FromHtml(color.ChildPanelColor);
((Guna2Panel)component).FillColor = ColorTranslator.FromHtml(color.ChildPanelColor);
}
component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
else if (component is Panel)
{
ChangeTheme(color, component.Controls);
if (component.Tag == ColorChangeTag)
component.BackColor = ColorTranslator.FromHtml(color.MainPanelColor);
else if (component.Tag == ColorChangeLight)
component.BackColor = ColorTranslator.FromHtml(color.ChildPanelColor);
component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
else if (component is Guna2Button)
{
if (component.Tag == ColorChangeTag)
{
//((Guna2Button)component).FillColor = ColorTranslator.FromHtml(color.MainPanelColor);
component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
else if (component.Tag == ColorChangeTag)
{
}
}
else if (component is TextBox)
{
if (component.Tag == ColorChangeTag)
{
component.BackColor = ColorTranslator.FromHtml(color.MainPanelColor);
component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
}
else if (component is Label)
{
if (component.Tag == ColorLabel)
{
component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
}
else if (component is MenuPanelButton)
ChangeTheme(color, component.Controls);
//System.Console.WriteLine(component.Name + ": " + color.ChildPanelColor);
}
}
public static void ChangeColor(ColorScheme color, Control component)
{
component.BackColor = ColorTranslator.FromHtml(color.MainPanelColor);
component.ForeColor = ColorTranslator.FromHtml(color.MainPanelForeColor);
}
}