我正在尝试为我的 gui 编写一个主题转换器,但效果不佳,我已经尝试了我所知道的一切。我有 2 个表单 MainUI 和 Themes,我试图在主题表单下按下一个按钮,然后它会在 MainUi live 下触发代码,我的意思是 live 会直接发生,所以我不需要关闭 Themes以使其生效为例。.我的主 UI 的主题代码是这样的: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); }主题:private void button4_Click(object sender, EventArgs e) { MainUI main = new MainUI(); main.FireEvent(); }
1 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
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();
}
}
在主 UI 中使用以下代码:
private Themes _theme;
private void button7_Click(object sender, EventArgs e)
{
if(_theme == null)
_theme = new Themes(this);
_theme.Show();
}
- 1 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消