2010-12-20 61 views
0

我在C#中有兩種形式...我在表單1 pic,pic2和picC中聲明3 var。如何從C#中的另一個窗體調用var#

在zoomform我實例在Form1對象,試圖得到變量的值..但我跑進計算器例外...

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(); 

    } 
    } 
+0

沒有投票或正確答案爲這個?發佈了很多答案,可能有人會從他們那裏解決你的問題,或者至少幫助你。 – 2010-12-20 07:40:42

回答

1

這是因爲當你調用

zoomForm ZF =新zoomForm();它會創建一個Form1的對象,再創建一個循環ZoomForm對象的結果,最終導致計算器

是^類似fllowing suisidal代碼

Class A 
{ 
     A a ; 

    A() 
    { 
     a = new A(); 
    } 
} 
1

這是東陽您創建一個包含zoomForm的實例Form1的一個實例其中包含一個Form1實例,該實例包含一個zoomForm實例,該實例包含一個Form1實例,該實例包含一個zoomForm實例,該實例包含一個Form1實例,該實例包含一個zoomForm實例,該實例包含一個Form1實例,該實例包含一個zoomForm實例,去你的籌碼。

0

在zoomForm你實例化一個Form1並在Form1中你實例化一個zoomForm,讓您的調用堆棧看起來像這樣(假設你首先要創建一個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; 
0

你的代碼更改爲類似

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(); 
     } 
    } 
} 

如果您希望引用父/呼叫表單,則需要明確設置此類引用。

0

嘗試this.Here我傳遞的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(); 
    } 
} 
+1

不,你沒有聲明任何屬性 - 你有公共*字段*,這通常是一個壞主意。 – 2010-12-20 07:45:31

相關問題