c#动态控件名称

时间:2011-07-22 13:46:40

标签: c# xml visual-studio dynamic

我正在尝试使用XML文件在运行时创建控件。在使用XML文件指定的名称创建这些控件后,我将如何访问这些控件?

例如,如果我在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);

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

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

如果这没有用,请告诉我们您正在使用的应用程序类型(WinForms,WPF,ASP.NET等)。

答案 1 :(得分:0)

想想你如何告诉另一个按钮appart? 我认为您需要在XML中添加一个名称字段,然后在创建按钮时将按钮名称设置为XML格式。

另一种选择是使用反射来查找所有按钮或所有TextBox,但如果你没有任何方法在xml中唯一地识别它们,那么你将无法在运行时告诉它们appart。