2016-01-23 52 views
0

我在與這部分的麻煩試圖創建一個PictureBox從另一類另一種形式的一種形式,我希望我已經提供了足夠的信息C:動態創建從另一個類一個PictureBox到

Catelogue.cs < - 類加載PictureBox的

class Catelogue 
{ 
    public void loadCatelogue() 
    { 
     mainPageGUI u = new mainPageGUI(); 

     PictureBox pictureBox1 = new PictureBox(); 
     pictureBox1.Location = new System.Drawing.Point(0, 0); 
     pictureBox1.Name = "pictureBox1"; 
     pictureBox1.Size = new System.Drawing.Size(500, 500); 
     pictureBox1.BackColor = Color.Red; 
     u.Controls.Add(pictureBox1); 

     MessageBox.Show("HI"); 
    } 
} 

mainmenuGUI.cs < ---形成的呼喚loadcatelogue()來加載圖片框

private void catelogueButton_Click(object sender, EventArgs e) 
{ 
    Catelogue a = new Catelogue(); 
    a.loadCatelogue(); 
} 
+0

目前,在PictureBox沒有在mainmenuGUI形式 –

回答

1

您正在創建mainPageGUI窗體的新實例,並向該實例添加新圖片框。這個實例不是調用你的方法的實例,它從來沒有被顯示。所以你的原始實例保持不變,你什麼都看不到。 (只是爲了說明問題嘗試用u.Show()來改變你的MessageBox線;

要解決,只是改變你的調用代碼,並通過在其上應該創建PictureBox的形式實例

private void catelogueButton_Click(object sender, EventArgs e) 
{ 
    Catelogue a = new Catelogue(); 

    // pass this instance to the method.... 
    a.loadCatelogue(this); 
} 

,當然使用實例通過

public void loadCatelogue(mainPageGUI u) 
{ 
    PictureBox pictureBox1 = new PictureBox(); 
    pictureBox1.Location = new System.Drawing.Point(0, 0); 
    pictureBox1.Name = "pictureBox1"; 
    pictureBox1.Size = new System.Drawing.Size(500, 500); 
    pictureBox1.BackColor = Color.Red; 
    u.Controls.Add(pictureBox1); 
} 
+0

顯示了它的工作原理吧! :D非常感謝! –