C#用句柄如何实现对很多窗体的创建,关闭,已经操作等

问题1:在主窗体上需要动态添加N个按钮
问题2:点击主画面上的按钮创建,显示对应的子窗体(例如:点击按钮B,显示子窗体B)
问题3:对应子窗体的打开着的时候,再点击该按钮先关掉原来的子画面,再创建

用句柄来操作
1:句柄能实现对窗体的创建,操作,关闭吗?
2:有没有上面办法可以快速,便捷的创建多个窗体(例如:一千个窗体,不创建1000次的方法)

句柄只能在已经生成的窗口获取,是窗口的一部分,可以用来判断状态等,但不能通过句柄来创建。

用不着句柄
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Name = "button" + i.ToString();
btn.Text = "button" + i.ToString();
btn.Click += new EventHandler(btn_Click);
Controls.Add(btn);
btn.Top = i * 100;
}
再编写一个函数
private void btn_Click(object o, EventArgs e)
{
MessageBox.Show((o as Button).Text);
if ((o as Button).Text == "button1")
new FormA().Show();
else if ((o as Button).Text == "button2")
new FormB().Show();
...
}

不过不建议创建1千个窗口,那样系统会卡成狗。