为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用实时按钮访问另一个表单的属性?

如何使用实时按钮访问另一个表单的属性?

C#
慕标5832272 2022-01-09 15:40:16
我正在尝试为我的 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();

}


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信