C# Winform 在 child 表单中显示不需要的背景颜色
C# Winform show unwanted Background color in the child form
我不知道为什么我的应用显示白色背景。不管是parent还是child,我都没有设置任何形式的白底。我已经尝试了所有方法并将每个面板的背景颜色设置为 transparent 但白色仍然存在。
请看下图,我用蓝色马克笔标记了白色。
WinForm Screenshot
我正在使用 .Net Framework 4.7 并为 UI 个组件使用 Guna2 Framework。
我正在使用 Dock 属性 来提高响应能力
我为每个菜单面板创建了不同的表单,只要单击菜单面板,它的表单就会显示在我遇到与白色相关的问题的区域。
我有一个 parent/startup 表单,其中有多个面板用于菜单、标题和一个名为 Child 面板的主面板。
Child Panel 是我将相应的表单添加到面板控件并显示它的面板。
我总是把 BoarderStyle 属性 放在所有表格中 None。
我已经尝试将边距和边距设置为 0,但它仍然显示白色。
This is my home/parent form
This is my child Form which I add in child panel of parent Form
这是将child表格显示到Parent表格的Child面板中的方法
#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 class 到 enable/disable 黑暗模式
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);
}
}
我在父表单中遇到了问题,我有一些白色边框,但我从未使用过任何 borderstyle
通过从运行时生成的父表单中删除阴影来解决问题
我不知道为什么我的应用显示白色背景。不管是parent还是child,我都没有设置任何形式的白底。我已经尝试了所有方法并将每个面板的背景颜色设置为 transparent 但白色仍然存在。
请看下图,我用蓝色马克笔标记了白色。
WinForm Screenshot
我正在使用 .Net Framework 4.7 并为 UI 个组件使用 Guna2 Framework。
我正在使用 Dock 属性 来提高响应能力
我为每个菜单面板创建了不同的表单,只要单击菜单面板,它的表单就会显示在我遇到与白色相关的问题的区域。
我有一个 parent/startup 表单,其中有多个面板用于菜单、标题和一个名为 Child 面板的主面板。
Child Panel 是我将相应的表单添加到面板控件并显示它的面板。
我总是把 BoarderStyle 属性 放在所有表格中 None。
我已经尝试将边距和边距设置为 0,但它仍然显示白色。
This is my home/parent form
This is my child Form which I add in child panel of parent Form
这是将child表格显示到Parent表格的Child面板中的方法
#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 class 到 enable/disable 黑暗模式
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);
}
}
我在父表单中遇到了问题,我有一些白色边框,但我从未使用过任何 borderstyle
通过从运行时生成的父表单中删除阴影来解决问题