【问题标题】:Clear all LIST <> each time click the button?每次单击按钮时清除所有 LIST <>?
【发布时间】:2013-09-13 14:34:46
【问题描述】:

有什么方法可以快速清除所有列表项,而不是使用 List.Clear();他们每个人的方法?因为当我第一次单击按钮时,我在列表中存储了一些项目,而当我第二次单击按钮时,它假设会获取新项目,但它仍然保留旧项目而不是新项目...我想清除所有列表在单击按钮并开始在我的列表中存储项目后立即帮助我解决这个问题...

我有以下课程:

Fruits
vegetables
cars
Homes
.
.
.

【问题讨论】:

  • 也许在重新填写之前清除每个列表?
  • 如果他们在不同的班级那么这将是非常困难的......
  • @TimSchmelter 不知何故它仍然持有旧的。当我第二次点击按钮时。
  • 如果它们都采用相同的形式,甚至是相同的容器控件,如Panel,您可以使用foreach(var lb in Controls.OfType&lt;ListBox&gt;()) lb.Items.Clear();
  • @user2760129 如果他们在不同的班级,那么是的,你应该在他们自己的班级中清除它们。

标签: c# listbox


【解决方案1】:

解决您的问题的方法就是首先没有列表。

而不是将这些静态方法设置为 void 并将其结果粘贴在每次调用它们时都需要清除的静态列表中,而应该返回它们的值,如下所示:

public static List<string> GetFruits()
{   
    var list = new List<string>();

    OracleConnection conn1 = MyConnection.GetSourceConnection();

    conn1.Open();  
    using (OracleCommand storeFruits = new OracleCommand("MyCOMMAND", conn1))
    {
        using (OracleDataReader reader = storeFruits.ExecuteReader())
        {
            while (reader.Read())
            {
                list.Add((string)reader["TABLE_NAME"]);
            }
        }
    }

    return list;
}

这有很多优点:

  1. 您可以同时调用该方法而无需担心,因为每个调用者都有自己的列表。

  2. 永远不用担心清除列表。您每次都重新开始。

  3. 不必担心某个调用者正在使用的列表由于在其他位置的其他调用而被修改。每个调用者只需要担心他们的代码,而不是其他人的。

【讨论】:

  • 嗯,我认为这是答案,但我需要在接受之前检查。谢谢
  • 请检查我的问题。最后一个
  • @user2760129 如果您想要返回多个值,请创建一个新类型来表示您想要返回的内容,然后返回该类型的新实例。创建一个具有两个 List&lt;string&gt; 属性的新类,并返回它们。另一种选择是,如果两个列表的值一起形成一个项目,那么您应该有一个具有两个字符串属性的自定义类型列表,而不是两个字符串列表。在不知道具体数据是什么的情况下,我无法说出哪个对您有意义。
  • 想法是对存储在我的 LIST1 和 LIST2....
【解决方案2】:

如果它们都是私人列表,您将无法从其他班级看到它们

即使您将它们设为public static,您仍然需要这样做:

Class1.myLIST1.Clear();
Class2.myLIST2.Clear();
// etc

【讨论】:

  • 这可能不可行,如果可行,它几乎肯定是一个完全不适合使用的解决方案。它们很可能是同一类的多个实例,或者可能有其他实例不与此特定形式相关,等等。
  • @Servy 那么请给出一个更好的解决方案...从问题 每个存储在不同类中的列表 并且每个都是private static。我没有说这是做他需要做的最好的方式,我建议了一种让他做他要求的方式
  • @iabbott 鉴于提供的信息,无法正确解决问题,因此正确的方法是等待足够的信息,而不是提供不适当和不负责任的解决方案。
  • @user2760129 这是一种不正确的心态。为某人提供不恰当的解决方案是有害的。他们会浪费时间试图让不恰当的解决方案发挥作用。更糟糕的是,尽管这样的解决方案似乎在一些测试用例中有效,但由于它没有解决底层设计问题,因此会继续导致重大问题。作为 OP 显示的代码的结果,很明显这 不是 一个好的解决方案,并且首先不应该有静态列表。解决这个问题会使整个问题消失。
  • @iabbott 是我的错,而不是你的错,这就是你获得 +1 的原因。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多