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]);
}
}
}
}