我创建了 newPropertyGrid 并将其添加到 newTabPage 。我将所有newTabPage保存到lstTankTabPages(泛型集合)。我想在属性网格中更改数据时引发事件以更改主窗体上的自定义控件。 我的问题,如何从 lstTankTabPages 获取所有 newPropertyGrid ?谢谢。
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);
}
答案 0 :(得分:1)
假设Modules.lstTankTabPages是
List<TabPage>
然后这是获取您在该循环中创建的PropertyGrids的一种方法
foreach(TabPage page in Modules.lstTankTabPages) {
PropertyGrid newPropertyGrid = (PropertyGrid)page.Controls[0];
// do something with it
}
答案 1 :(得分:0)
您可以使用“OfType”获取所有PropertyGrid项目
foreach (TabPage page in Modules.lstTankTabPages)
{
PropertyGrid newPropertyGrid = page.Controls.OfType<PropertyGrid>().FirstOrDefault()
if (newPropertyGrid != null)
{
// do something with it
}
}