2012-11-28 73 views
0

我創建了newPropertyGrid並將其添加到newTabPage。我將所有newTabPage保存到lstTankTabPages(泛型集合)。我想要在屬性網格中更改數據更改主窗體上的自定義控件時引發事件。 我的問題,如何獲得全部newPropertyGrid from lstTankTabPages?謝謝。如何從TabPage Collection獲得PropertyGrid

for (int i = 0; i < Modules.tankQuantity; i++) 
    { 
     string name = string.Format("Tank{0}", i + 1); 

     // create newTabPage 
     TabPage newTabPage = new TabPage(name); 
     newTabPage.Name = string.Format("tabPage{0}", name); 

     // create newPropertyGrid 
     PropertyGrid newPropertyGrid = new PropertyGrid(); 
     newPropertyGrid.Name = string.Format("propertyGrid{0}", name); 
     newPropertyGrid.BrowsableAttributes = new AttributeCollection(new DisplayModeAttribute("Ullage,Gross,Netto,Water,Temperature,Density,Capacity,Connection,Appearance")); 
     newPropertyGrid.SelectedObject = new TankInventoryCustom(); 

     // add newPropertyGrid to newTabPage 
     newTabPage.Controls.Add(newPropertyGrid); 

     // add newTabPage to tabControl 
     this.tabControlTankInventory.TabPages.Add(newTabPage); 

     // add newTabPage to collection 
     Modules.lstTankTabPages.Add(newTabPage); 
    } 

回答

1

假設Modules.lstTankTabPages是

List<TabPage> 

那麼這裏是一個辦法讓你在這個循環中創建的PropertyGrids

foreach(TabPage page in Modules.lstTankTabPages) { 
    PropertyGrid newPropertyGrid = (PropertyGrid)page.Controls[0]; 
    // do something with it 
} 
+0

謝謝你。我的問題現在解決了。 – YD4

0

您可以使用 「OfType」 來獲取所有PropertyGrid物品

foreach (TabPage page in Modules.lstTankTabPages) 
{ 
    PropertyGrid newPropertyGrid = page.Controls.OfType<PropertyGrid>().FirstOrDefault() 
    if (newPropertyGrid != null) 
    { 
     // do something with it 
    } 
} 
相關問題