Закрыть форму в настоящее время в фокусе - PullRequest
0 голосов
/ 27 ноября 2018

Мне было интересно, как вы закроете форму, которая в данный момент находится в фокусе, или ту, в которой содержится элемент управления. Например, у меня есть импортированный заголовок с меню, которое я импортирую во все формы в моем приложении.

Это (упрощенный) код в моем классе заголовка:

public static Panel GetHeader()
{
    ...
    menuItem.Text = "Menu Item";
    menuItem.Name = "Next form to open";
    menuItem.Click += toolStrip_Click;
    ...
}

public static void toolStrip_Click(object sender, EventArgs e)
{
    ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
    NavigationClass.SaveNextForm(menuItem.Name);
}

Я создал класс навигации, который выберет следующую форму для открытия, но я не смог найти ничего для этогозакрыть текущую (поскольку Close () не является опцией, поскольку она импортируется с помощью Controls.Add (HeaderClass.GetHeader))

Редактировать

Просто дляпоясните, эта форма находится в другом файле, который является обычным файлом класса.Вот в чем проблема, потому что я пытаюсь избежать серьезного нарушения принципа СУХОЙ

1 Ответ

0 голосов
/ 27 ноября 2018

Не используйте статические обработчики, как рекомендует @Hans Passant.Это важно.

Попробуйте отправить основную форму вашему классу в качестве параметра и сохраните ее в этом классе.Это может быть сделано либо когда вы создаете экземпляр своего класса, либо после этого.Затем, когда вам нужно закрыть форму, вызовите метод Close.Поскольку вы не включаете свои коды более подробно, вот мой пример с некоторыми допущениями.

public class MainForm : Form
{
    private HeaderClass HeaderClass;
    public MainForm()
    {
        HeaderClass = new HeaderClass(this);
    }
}

public class HeaderClass
{
    private MainForm MainForm;
    public HeaderClass(MainForm mainForm)
    {
        MainForm = mainForm;
    }

    public void MethodThatYouNeedToCloseTheFormFrom()
    {
        ...
        MainForm.Close();
        ...
    }
}

Дайте нам знать, если вам потребуется дополнительная обработка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...