2011-07-22 89 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文件中的(名稱)項是控件的(名稱)屬性。 –