【问题标题】:How do i make an exception when clearing a c# form?清除 c# 表单时如何处理异常?
【发布时间】:2016-12-02 11:09:12
【问题描述】:

我需要清除我的申请表。但是有 2 个控件我不想让它清除。

当我点击ComboBox 中的另一个选项时。它首先擦除所有控件,然后加载新控件。(或者至少这是我想要实现的目标。)

此代码循环遍历表单中的所有控件并检查控件名称是否不等于cmbTypelblType。 (因为这样在清除所有控件时,这两个控件将保持不变。)

foreach (Control c in this.Controls)
{
    if (c.Name != "cmbType" && c.Name != "lblType")
    {
        this.Controls.Remove(c);
        c.Dispose();
    }
}

但是这样有时当我单击ComboBox 中的不同选项时,它不会完全删除所有控件。它会留下一些不应该发生的控制。

【问题讨论】:

  • 您执行此操作的方法不考虑面板或组框等控件中的子控件。
  • 循环和循环源在反向中间工作。您正在从您定位的来源中减去。
  • @ThePerplexedOne 我们不使用任何面板。这只是一种形式。而不是在面板中。
  • 使用foreach (Control c in this.Controls.ToList()),解决@snnbm提到的问题
  • @snnbrn 我不太明白你的评论。能不能说的清楚一点?

标签: c# controls


【解决方案1】:

为了列出

 foreach (Control item in Controls.OfType<Control>().ToList())

【讨论】:

  • 非常感谢!你愿意解释一下,我们哪里出错了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 2020-01-29
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多