Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除一组在循环中创建了UserControls的面板_C#_.net_Winforms_Loops_Panel - Fatal编程技术网

C# 删除一组在循环中创建了UserControls的面板

C# 删除一组在循环中创建了UserControls的面板,c#,.net,winforms,loops,panel,C#,.net,Winforms,Loops,Panel,我创建了一个带有按钮“添加”和按钮“删除”的面板。如果您单击“添加”,面板将在标题下方创建,您可以创建任意数量的面板,它们将列出 在每个面板上都有一个复选框,如果单击“删除”按钮后选中该复选框,我想删除该面板 我可以得到一个循环的直觉:对于,但还是太新手了,没有一点提示就无法通过这个循环 - 公共部分类测试\u自动:表单 { ArrayList strategyFutureList=新建ArrayList(); 公共测试(自动) { 初始化组件(); 实例=此; } //创建新的未来战略 pub

我创建了一个带有按钮“添加”和按钮“删除”的面板。如果您单击“添加”,面板将在标题下方创建,您可以创建任意数量的面板,它们将列出

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

我可以得到一个循环的直觉:对于,但还是太新手了,没有一点提示就无法通过这个循环

-

公共部分类测试\u自动:表单
{
ArrayList strategyFutureList=新建ArrayList();
公共测试(自动)
{
初始化组件();
实例=此;
}
//创建新的未来战略
public void CreateStrategyFuture()
{
ConsoleStrategyItem strategyitemfourture=新的ConsoleStrategyItem();
strategyItemFuture.Location=新点(3,3);
未来集装箱。高度+=85;
strategyFutureList.Add(strategyItemFuture);
添加(strategyItemFuture);
ConsoleStrategyItem.Instance.txtStrategyName.Text=“Strat Future”+strategyFutureList.IndexOf(strategyItemFuture)+”;
ConsoleStrategyItem.Instance.Name=“strategyFuture”+strategyFutureList.IndexOf(strategyItemFuture);
ConsoleStrategyItem.Instance.cbxdeleteststrategy.Name=“cbxdeletfuture”+strategyFutureList.IndexOf(strategyItemFuture);
}
//使它出现
私有void btnAddStrategyFuture_Click_1(对象发送方,事件参数e)
{
CreateStrategyFuture();
}
//删除一些选定的策略
public void DeleteStrategyFuture()
{
for(int i=0;i
您不必创建单独的ArrayList来维护添加到
futureContainer
的用户控件列表,您只需遍历它的控件集合即可

只需在
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]);
           }
        }
     }
}
public void DeleteStrategyFuture()
{
var length=futureContainer.Controls.Count;
foreach(int i=0;i
如果看不到要将控件添加到表单的位置。您只是将它们添加到ArrayList错误中。。。谢谢,我更正了要删除的面板是:strategyItemFuture,而不是包含所有策略的futureContainer,我不知道为什么我不能引用strategyItemFuture。想法是,您应该通过查找将控件从父容器中移除,在父容器中添加所有控件。代码显示OK,但是:bool isChecked=((ConsoleStrategyItem)futureContainer.Control[i]).Instance.cbxDeleteTestStrategy.Checked;如果(已选中)实例不工作,我应该创建一个新实例吗?
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]);
           }
        }
     }
}