0

我创建了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);
    }
4

2 回答 2

1

假设 Modules.lstTankTabPages 是

List<TabPage>

那么这是获取您在该循环中创建的 PropertyGrids 的一种方法

foreach(TabPage page in Modules.lstTankTabPages) {
    PropertyGrid newPropertyGrid = (PropertyGrid)page.Controls[0];
    // do something with it
}
于 2012-11-28T00:54:53.927 回答
0

您可以使用“OfType”获取所有 PropertyGrid 项目

foreach (TabPage page in Modules.lstTankTabPages)
{
    PropertyGrid newPropertyGrid = page.Controls.OfType<PropertyGrid>().FirstOrDefault()
    if (newPropertyGrid != null)
    {
        // do something with it
    }
}
于 2012-11-28T01:02:24.407 回答