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

我正在尝试为我的 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();

    }


慕标5832272
浏览 132回答 1
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();    }}在主 UI 中使用以下代码:private Themes _theme;private void button7_Click(object sender, EventArgs e){   if(_theme == null)       _theme = new Themes(this);   _theme.Show();}
打开App,查看更多内容
随时随地看视频慕课网APP