c# - 在表单中处理自定义内存中控件

标签 c# winforms controls dispose

<分区>

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

所以我创建字段:

private Label _someCounter;
private Label _someAnotherCounter;

我初始化它们,根据需要使用它们,这很棒。

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

  1. 我在 Dispose override 方法中写了一些代码,由设计者生成(因为设计者有时可能会覆盖它,我不喜欢这个想法)。

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

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

最佳答案

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

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

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

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

所以第三种方法是正确的 - 因为它们是作为 Form 控件添加的,所以它们会自动处理。

关于c# - 在表单中处理自定义内存中控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58281328/

相关文章:

c# - HTTPListener 无法通过网络工作

c# - 具有多个结果的 NHibernate 条件

c# - 如何刷新屏幕以使关闭的表单真正消失

asp.net - 爬虫,相对路径到绝对路径

c# - 如何获取类型的默认泛型委托(delegate)

c# - 在 Repository/UnitOrWork 之上使用服务类时,我应该将逻辑不适合 Repository 的常用数据访问代码放在哪里?

c# - 表单应用中连接字符串的单一声明

javascript - 谷歌地图 : Using custom buttons

.net - 在 WinForm 中单击按钮时将所有控件切换为只读

wpf - 具有相对尺寸的RectangleGeometry ...如何?