论坛里看到的问题,链接无法考究。
1. 问题:窗体随着另外一个窗体的变化而变化
假设有 窗体A , 窗体B, 窗体B 的颜色会发生变化,希望窗体A的颜色也同时发生变化
2. 解决思路:
在 窗体A 中订阅 窗体B 颜色变化的事件,事件中获取 窗体B 的颜色并赋予 窗体A
3. 代码:
FormA:
public partial class FormA : Form
{
public FormA()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
frmB = new FormB();
frmB.BackColorChanged += frmB_BackColorChanged;
frmB.Show();
}
private FormB frmB;
public void frmB_BackColorChanged(object sender, EventArgs e)
{
if(frmB == null)
return;
this.BackColor = frmB.BackColor;
}
}
FormB:
public partial class FormB : Form
{
public FormB()
{
InitializeComponent();
}
private void btnChangeColor_Click(object sender, EventArgs e)
{
Color[] colors = new Color[] {Color.Green, Color.Pink };
this.BackColor = colors[colorIndex % 2];
colorIndex++;
}
private int colorIndex = 0;
}
4. 效果:
当点击 FormB 上的 Change Color 按钮时,可以看到 FormB 背景颜色发生改变,同时FormA 的背景颜色也随之变化