首页 > 解决方案 > 在表单中处理自定义内存控件

问题描述

我有一个Form(嗯,我的窗口,它继承自Form),我想在其中创建一些控件一次,然后在此类中的整个代码中引用它们。

所以我创建了字段:

private Label _someCounter;
private Label _someAnotherCounter;

我初始化它们,随心所欲地使用它们,这很棒。

但我还需要记住如何处理它们,问题是:我该怎么做?我可以想到三种方法:

  1. 我在由设计师生成的覆盖方法中编写了更多代码Dispose(因为设计师可能会在一段时间内覆盖它,我不喜欢这个想法)。

  2. copmonents在一个类中找到了一个字段,该字段由生成的Dispose覆盖处理,所以我只是将这些控件添加到copmonents集合中,因此它们会自动处理。

  3. 毕竟,我也在想,毕竟我将它们添加到我的界面中,所以component无论如何都会添加它们。所以我不需要做任何事情。

标签: c#winformscontrolsdispose

解决方案


好的,所以你可以创建虚拟类:

public class MyLabel : Label
{
  protected override void Dispose(bool disposing)
  {
    base.Dispose(disposing);
  }
}

Dispose您可以在方法中设置断点。

将字段的类型更改为MyLabel并检查是否调用了该方法,并且在没有我显式调用它们或做任何事情的情况下调用它。

所以第三种方法是正确的——因为它们是作为Form控件添加的,所以它们会自动被丢弃。


推荐阅读