如何在C#中调用另一个表单中的var

我在C#中有两种形式......我在形式1 pic,pic2和picC中声明了3 var。 在zoomform中我实例化form1对象以尝试获取变量值..但我遇到了stackoverflow异常...
 namespace Disimage
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    zoomForm zf = new zoomForm();

     public Bitmap pic;
            public Bitmap pic2;
            public Bitmap picC;
    }
    }


    namespace Disimage
    {
        public partial class zoomform : Form
        {
            public zoomform()
            {
                InitializeComponent();
            }
    Form1 f1 = new Form();

    }
    }
    
已邀请:
这是因为你打电话的时候 zoomForm zf = new zoomForm();它将创建一个Form1对象,它再次创建一个循环的ZoomForm对象结果,最终导致stackoverflow 它类似于fllowing suisidal代码
Class A
{
        A a ;

   A()
   {
        a = new A();
    }
}
    
这是因为你创建了一个Form1实例,其中包含一个form1实例,其中包含一个form1实例,其中包含一个Form1实例,其中包含一个zoomForm实例,该实例包含一个Form1实例,其中包含一个zoomForm实例它包含一个Form1实例,其中包含一个zoomForm实例,然后是你的堆栈。     
在zoomForm中你实例化一个Form1,在Form1中你实现了一个zoomForm,所以你的callstack看起来像这样(假设你先创建一个zoomForm): ... Form1中 zoomForm Form1中 zoomForm Form1中 zoomForm Form1中 zoomForm Form1中 zoomForm Form1中 zoomForm Form1中 zoomForm Form1中 zoomForm ... 大约8千行或其他方式太高的数字。解决此问题的一种简单方法是不对类中的对象进行实例化,而是从外部设置对象。
zoomForm zf = new zoomForm();
form f1 = new Form1();
zf.form1 = f1;
f1.zoomForm = zf;
    
将您的代码更改为类似的内容
namespace Disimage
{
    public partial class Form1 : Form
    {
        zoomForm zf;       
        public Bitmap pic;
        public Bitmap pic2;
        public Bitmap picC;
        public Form1()
        {
            InitializeComponent();
            zf = new zoomForm();
            zf.Parent = this;
        }       
    }
}


namespace Disimage
{
    public partial class zoomform : Form
    {
        Form1 Parent;
        public zoomform()
        {
            InitializeComponent();
        }   
    }
}
如果您希望引用Parent / Calling表单,则需要明确设置此类引用。     
试试这个。在这里我通过将另一种形式的相同值类型声明为公共属性来将3 var传递给另一种形式
    namespace Disimage {
    public partial class Form1 : Form
    { 
        public Form1()
    { 
            InitializeComponent();

    } 
        private Bitmap pic;
        private Bitmap pic2;
        private Bitmap picC; 
        zoomForm zf = new zoomForm();
        zf.pic = pic;
        zf.pic2 = pic2;
        zf.picC = picC;
        zf.ShowDialog();

    }
}
namespace Disimage
{
    public partial class zoomform : Form 
    {
        public Bitmap pic;
        public Bitmap pic2;
        public Bitmap picC; 
        public zoomform() 
        { 
            InitializeComponent(); 
        } 
        Form1 f1 = new Form(); 
    } 
} 
    

要回复问题请先登录注册