2010-10-25 77 views
2

我可以动态地成功创建对象并动态命名它们。例如:点击一个画布创建一个名为'image1'的图像,点击其他地方,然后创建'image2'等。但是之后,如果我想根据名称更改属性,该怎么办?在我的JavaScript日子里,我会getElementById('image1')。style.color = #ffffff;C#动态对象创建/修改?

在c#中怎么样?可以这么说'getElementById()'在哪里?

+2

这是WinForms? WPF? – 2010-10-25 22:39:39

回答

2

在的WinForms,你可以使用

Control c = Form1.Controls.Find("image1", true); 

int i = Form1.Controls.IndexOfKey("image1") 
Control c = Form1.Controls[i]; 

对于WPF的东西是不同的,这太问题看起来可能是在这种情况下有用的:How can I find WPF controls by name or type?

+0

这将在wpf中工作吗?另外,如果我正确理解,在设置Control c之后,我可以做一些事情,比如c.Text =“test”; ??? – Phil 2010-10-25 22:55:46

+0

不,WPF是不同的,但这个问题可能会帮助你:http://stackoverflow.com/questions/636383/wpf-ways-to-find-controls是的,一旦你有'控制c',你可以改变文字如果你想。 – WildCrustacean 2010-10-25 22:58:27

+0

谢谢,我会试试看,它看起来像正确的轨道。 – Phil 2010-10-25 23:06:58

0

我不知道我是否正确理解你。

通常,与.NET相关的技术一起工作时,对象是生活在集合中。例如,在Windows窗体项目中,控件被放置在“控件”集合中(您可以使用this.Controls访问它)。

那么,如何检索一个特定的对象?取决于你在寻找什么。所有对象都有一些属性,您可以将其用作ID。

foreach (Control c in this.Controls) 
{ 
    if (c.ClientID == 'ID than I am looking for') 
     performsomeaction(); 
}