Найти открытую форму от отправителя - PullRequest
0 голосов
/ 15 мая 2019

У меня есть 24 кнопки, каждая из которых открывает отдельную форму.Я хочу иметь один метод для открытия / , выводя каждый из них на передний план при нажатии на все из них, поэтому мне не нужно создавать отдельный метод для каждого нажатия кнопки, чтобы он выглядел примерно так:

    private void OpenForm(object sender, EventArgs e)
    {
        Type type = sender.GetType();
        var existingInstance = Application.OpenForms.OfType<type>().Single();
        existingInstance.BringToFront();
    }

но потом я получаю сообщение об ошибке "тип" - это переменная, но используется как тип.

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

1 Ответ

1 голос
/ 15 мая 2019

Создание словаря для связи между кнопками и формами:

Dictionary<Button, Form> _buttonToFormDict = new Dictionary<Button, Form>();

Добавление кнопок и форм в словарь в вашем коде:

_buttonToFormDict.Add(button1, _form1);
_buttonToFormDict.Add(button2, _form2);
_buttonToFormDict.Add(button3, _form3);
...

Добавление события нажатия кнопки, которое проверяет, чтонажата кнопка и находит соответствующую форму:

private void button_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    if (sender is Button && _buttonToFormDict.ContainsKey(btn))
    {
        Form form = _buttonToFormDict[btn];
        if (!form.IsDisposed && form != null)
        {
            // Show the form if it was not shown
            form.Show();

            // Bring back the form if it was minimized
            if (form.WindowState == FormWindowState.Minimized)
            {
                form.WindowState = FormWindowState.Normal;
            }

            // Brig to front
            form.BringToFront();
        }
    }
}

и добавляет событие click к событию click кнопки.

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