使用循环中创建的UserControl删除一组面板

时间:2013-05-07 07:48:15

标签: c# .net winforms loops panel

我创建了一个带按钮的面板"添加"和一个按钮"删除"。如果你点击"添加"在此标题正下方创建一个面板,您可以根据需要创建它们,列出它们。

在每个面板上都有一个复选框,如果单击按钮删除后选中复选框,我想删除面板。

我可以得到一个循环的直觉:因为,但仍然太新手,没有一点点提示通过这个。

-

public partial class Test_auto : Form
{
    ArrayList strategyFutureList = new ArrayList();

    public Test_auto()
    {
        InitializeComponent();
        Instance = this;
    }

    //Create a new future strategy
    public void CreateStrategyFuture()
    {
        ConsoleStrategyItem strategyItemFuture = new ConsoleStrategyItem();
        strategyItemFuture.Location = new Point(3, 3);
        futureContainer.Height += 85;
        strategyFutureList.Add(strategyItemFuture);
        futureContainer.Controls.Add(strategyItemFuture);
        ConsoleStrategyItem.Instance.txtStrategyName.Text = "Strat Future " + strategyFutureList.IndexOf(strategyItemFuture) + " ";
        ConsoleStrategyItem.Instance.Name = "strategyFuture" + strategyFutureList.IndexOf(strategyItemFuture);
        ConsoleStrategyItem.Instance.cbxDeleteStrategy.Name = "cbxDeleteFuture" + strategyFutureList.IndexOf(strategyItemFuture);
    }

    //Makes it appear
    private void btnAddStrategyFuture_Click_1(object sender, EventArgs e)
    {
        CreateStrategyFuture();
    }

    //Delete a-some selected strategies
    public void DeleteStrategyFuture()
    {
        for (int i = 0; i < strategyFutureList.Count; i++)
        {
            if (ConsoleStrategyItem.Instance.cbxDeleteStrategy.Checked = true)
            {
            }
        }
    }

    private void btnDeleteStrategyFuture_Click(object sender, EventArgs e)
    {
        DeleteStrategyFuture();
    }
}

1 个答案:

答案 0 :(得分:0)

您不必创建单独的ArrayList来维护添加到futureContainer的UserControl列表,您可以简单地遍历它的Controls集合。

只需在DeleteStrategyFuture()方法

中执行此操作即可
public void DeleteStrategyFuture()
{
    var length=futureContainer.Controls.Count;
    foreach(int i=0; i< length; i++)
    {
        if(futureContainer.Controls[i].GetType()==typeof(ConsoleStrategyItem))
        { 
           bool isChecked =((ConsoleStrategyItem)futureContainer.Controls[i])
                               .Instance.cbxDeleteStrategy.Checked;
           if(isChecked)
           {
               futureContainers.Controls.Remove(futureContainers.Controls[i]);
           }
        }
     }
}