从发件人中查找打开的表单

时间:2019-05-15 16:59:17

标签: c# winforms controls

我有24个按钮,每个按钮可打开一个单独的表单。我希望有一种方法可以在单击所有按钮时都将它们打开/ 带到前面,这样我就不必为每次按钮单击创建单独的方法,因此看起来像这样:

select

但随后出现错误“'type'是变量,但像类型一样使用。

我看过许多其他有关Stack Overflow的论坛,但没有一个给我解决方案。也许我想完成的事情不可能?

1 个答案:

答案 0 :(得分:1)

创建字典以将按钮之间的链接链接到表单:

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事件中。