2014-09-29 117 views
-3

我想知道如何使用代碼創建對象。我已經開始用這樣的如何動態創建對象?

object ns = new PictureBox(); 
ns.BackgroundImage = Properties.Resources.myImage; 

但是,編譯器給我一個錯誤:

'object' does not contain a definition for 'BackgroundImage' and no extension method 'BackgroundImage' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

如果我刪除最後一行,它編譯,但出現的窗口上什麼都沒有。

+4

'PictureBox ns = new PictureBox();'?你爲什麼試圖像那樣創造它? – 2014-09-29 23:42:23

+0

或者簡單地使用'var ns = ...'。 – paqogomez 2014-09-29 23:47:05

回答

1

所以你真正要問的是如何在運行時將控件添加到窗體。關於你的問題的評論是正確的,就你實際詢問的內容而言,但你仍然不會看到任何形式的內容。要做到這一點,你確實有控制添加到窗體:

var ns = new PictureBox(); 

ns.BackgroundImage = Properties.Resources.myImage; 
this.Controls.Add(ns); 

順便說一句,有沒有你設置BackgroundImage財產,而不是Image性質特殊的原因?

+0

你好!非常感謝您的回覆!我是C#中的新手,看起來在stackoverflow上這裏沒有空間。每次我問一些容易的事情,我就會得票低,聲望就會下降。無論如何,是的,有一個原因,我使用'BackgroundImage',這樣我就可以將'backgroundImageLayout'設置爲'Stretch',並且圖像將.. ..伸展..到picturebox的大小。我無法找到任何與圖像屬性做到這一點...再次感謝您的及時回覆!如果可以的話,我會投你一票,但問這個問題奪走了我的名聲,現在我不能。 – 2014-09-30 00:01:25

+0

您應該設置'Image'屬性並使用'SizeMode'屬性來控制控件大小和圖像大小之間的關係。 「StretchImage」將強制圖像與控件具有相同的尺寸。 – jmcilhinney 2014-09-30 00:04:30

+0

你不贊成你自己的問題的答案。 upvote值10分,但接受的答案值15分。你接受你的問題的答案,你已經完成了。 – jmcilhinney 2014-09-30 00:05:35