从发件人处查找打开的表格
Find Open Form from Sender
我有 24 个按钮,每个按钮打开一个单独的表单。我想要一种方法来打开/在单击所有按钮时将每个按钮放在前面,这样我就不必为每个按钮单击都创建一个单独的方法,这样看起来像这样:
private void OpenForm(object sender, EventArgs e)
{
Type type = sender.GetType();
var existingInstance = Application.OpenForms.OfType<type>().Single();
existingInstance.BringToFront();
}
但随后我收到错误消息“'type' 是一个变量,但像类型一样使用。
我查看了 Stack Overflow 上的许多其他论坛,none 给了我一个解决方案。也许我想要完成的事情是不可能的?
在按钮和表单之间创建字典 link:
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();
}
}
}
并将点击事件添加到按钮的点击事件中。
我有 24 个按钮,每个按钮打开一个单独的表单。我想要一种方法来打开/在单击所有按钮时将每个按钮放在前面,这样我就不必为每个按钮单击都创建一个单独的方法,这样看起来像这样:
private void OpenForm(object sender, EventArgs e)
{
Type type = sender.GetType();
var existingInstance = Application.OpenForms.OfType<type>().Single();
existingInstance.BringToFront();
}
但随后我收到错误消息“'type' 是一个变量,但像类型一样使用。
我查看了 Stack Overflow 上的许多其他论坛,none 给了我一个解决方案。也许我想要完成的事情是不可能的?
在按钮和表单之间创建字典 link:
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();
}
}
}
并将点击事件添加到按钮的点击事件中。