Как получить доступ к свойствам другой формы с помощью кнопки live? - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь закодировать смену темы в моем графическом интерфейсе, но это не так хорошо работает, я перепробовал все, что знаю. У меня есть 2 формы MainUI и Темы, и я пытаюсь нажать кнопку под формой тем, и затем он запустит код под MainUi live, что я имею в виду под живым, так это то, что это произойдет напрямую, поэтому мне не нужно закрывать Темы чтобы это вступило в силу для примера. .

Код моего основного пользовательского интерфейса для Тем:

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 Ответ

0 голосов
/ 09 сентября 2018

Вы создаете новый экземпляр 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...