据我所知,这下面的代码会溢出,因为它被称为第二次。 这是解释, 假设我有form1,form2,form3
并在form1
Form NewForm2 = new Form2;
并且在form3中
Form NewForm3 = new Form2;
当我显示form2当然它的堆栈溢出因为它在Form1和Form3上第二次被调用, 好的,所以我的问题是有一种方法可以从多种形式连接Form2吗?有没有参考?
答案 0 :(得分:2)
所以我的问题是有没有办法从多个表单连接Form2? 是的,只需在表单上应用Singleton Pattern
public partial class Form2 : Form
{
private static Form2 inst;
public static Form2 GetForm
{
get
{
if (inst == null || inst.IsDisposed)
inst = new Form2();
return inst;
}
}
}
显示表单
Form2.GetForm.Show();
答案 1 :(得分:1)
您可以使用此代码查看是否已创建Form2
,如果已创建,则显示它,然后创建Form2
的新实例。
var form = Application.OpenForms.OfType<Form2>().FirstOrDefault();
if (form == null)
{
form = new Form2();
}
form.Show();
但是打开2个表单不应该导致SO异常,我认为其他地方有问题,但您可以尝试上面的代码并查看它是否解决了您的问题。