2011-07-22 87 views
1

我想通过使用XML文件在运行时创建控件。如何在使用XML文件指定的名称创建这些控件后访问这些控件?c#动态控件名称

举例来说,如果我有一个XML文件中的一系列控制:

<control id="0" type="textbox"> 
    <param id="0" type="(name)">DynamicTextbox</param> 
    <param id="1" type="location">100,73</param> 
    <param id="2" type="size">119,20</param> 
</control> 
<control id="1" type="button"> 
    <param id="0" type="(name)">DynamicButton</param> 
    <param id="1" type="location">200,82</param> 
    <param id="2" type="size">78,50</param> 
</control> 

如果我设计在设计模式的UI,我没有使用XML文件,我可以简单地调用控制与他们各自的名字。

DynamicTextbox.location = new Point(100,73); 
DynamicTextbox.size = new Size(119,20); 

DynamicButton.location = new Point(200,82); 
DynamicButton.size = new Size(78,50); 

由于我在运行时创建控件,我将如何使用这些名称访问它们?

谢谢!

回答

1

我认为你是将控件添加到UI元素? YOu应该能够通过它访问它们。因此,在的WinForms,你可能有类似...

TextBox tb = new TextBox(); 
tb.Name = "DynamicTextbox"; 
Panel1.Controls.Add(tb); 

TextBox tb = (TextBox)Panel1.Controls["DynamicTextbox"]; 

如果不然后帮助让我们知道您正在使用(的WinForms,WPF,ASP.NET等)

+0

DynamicTextbox不是控制型,我的意思是它是“(名称)”的控制的,如在XML文件中指定:' DynamicTextbox'另外,我正在使用WinForms。 –

+0

@Adrian,那怎么样... – musefan

+1

感谢您的回答......如果我有更多的代表,我会投你的答案! –

0
工作是什么类型的应用

想想你会如何告诉一个按钮从另一个按钮? 我认为你需要在你的XML中放入一个名称字段,然后在创建按钮时将按钮名称设置为XML中的内容。

另一种方法是使用反射来查找所有按钮或所有文本框,但是如果您没有任何方法在xml中唯一标识它们,那么您将无法在运行时告诉它们appart。

+0

XML文件中的(名称)项是控件的(名称)属性。 –