如何在 C# 中更改 MDI FORM 的背景颜色?
我使用背景颜色属性更改了它,但颜色没有更改。
我应该怎么做才能执行此任务?
MDI 控件的实际背景颜色基于 Windows 当前主题中的颜色。您必须在 WinForm 中物理设置 MdiClient 控件的背景。
// #1
foreach (Control control in this.Controls)
{
// #2
MdiClient client = control as MdiClient;
if (!(client == null))
{
// #3
client.BackColor = GetYourColour();
// 4#
break;
}
}
编辑 - 添加评论:
我们需要遍历 MdiParent 表单中的控件,以找到在将 Form 设置为 MdiParent 时添加的 MdiClient 控件。Foreach 只是一个类型通过集合的简单迭代。
我们需要在表单中找到 MdiClient 控件,为此我们使用 'as' 关键字在循环中强制转换当前控件。使用 'as' 关键字意味着如果强制转换无效,则设置的变量将为空。因此我们检查'client'是否为空。如果是,则循环中的当前控件不是 MdiClient 控件。只要变量'client'不为空,那么我们掌握的控件就是MdiClient,我们可以设置它的背景颜色。
将背景色设置为您想要的任何内容。只需将“GetYourColour()”替换为您想要的任何颜色,即 Color.White、Color.Blue、Colour.FromArgb(etc)...
由于只有 1 个 MdiClient,因此没有必要继续循环,因为这只是浪费处理时间。因此我们调用'break'来退出循环。
如果您需要其他解释,请告诉我。
将其写入 MDI 表单的加载方法中。
Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple;