我正在尝试将主题更改程序编码为gui,但效果不佳,我已经尝试了所有我知道的东西。我有2种表单MainUI和主题,我试图按主题表单下的按钮,然后它将在MainUi live下触发代码,我的意思是live将直接发生,所以我不需要关闭主题以使其生效为例。
我的主要Ui主题代码为:
{natural: 1}
主题:
private void button7_Click(object sender, EventArgs e)
{
bool Isopen = false;
foreach(Form f in Application.OpenForms)
{
if (f.Text == "Themes")
{
Isopen = true;
f.BringToFront();
break;
}
}
if (Isopen == false)
{
Themes theme = new Themes();
theme.Show();
}
}
public void FireEvent()
{ //Example
BackColor = Color.FromArgb(255, 255, 255);
}
答案 0 :(得分:1)
每次选择主题时,您都在创建MainUI
的新实例,因此您在错误的表单实例上调用FireEvent
。您需要传递对Themes
表单的引用。例如,创建一个接收MainUI
实例的构造函数。
class Themes : Form
{
private readonly MainUI _main;
public Themes(MainUI main) : this()
{
_main = main;
}
private void button4_Click(object sender, EventArgs e)
{
_main.FireEvent();
}
}
在主界面中,使用以下代码:
private Themes _theme;
private void button7_Click(object sender, EventArgs e)
{
if(_theme == null)
_theme = new Themes(this);
_theme.Show();
}