首页 > 解决方案 > C# Winform 在子窗体中显示不需要的背景颜色

问题描述

我不知道为什么我的应用程序显示白色背景。无论是父母还是孩子,我都没有以任何形式设置任何白色背景。我已经尝试了一切并将每个面板的颜色设置为透明,但白色仍然存在。

请看下图,我在蓝色标记中标记了白色。

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);
        }
    }

标签: c#.netvisual-studiowinforms

解决方案


我在父表单中遇到问题,我有一些白色边框,但我从未使用过任何边框样式

在此处输入图像描述

通过从运行时生成的父表单中移除阴影来解决问题


推荐阅读