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>

次に、そのループで作成したPropertyGridを取得する1つの方法を示します。

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 に答える