2014-09-29 115 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