在表单中处理自定义内存中控件
Disposing of custom in-memory controls in a form
我有一个 Form
(好吧,我的 window,它继承自 Form
),我想在这里创建一些控件,然后在整个代码中引用它们class.
所以我创建字段:
private Label _someCounter;
private Label _someAnotherCounter;
我初始化它们,随心所欲地使用它们,这很棒。
但我还需要记住 处理 它们,问题是:我该怎么做?我可以想到三种方法:
我在Dispose
覆盖方法中写了一些代码,由设计者生成(因为设计者可能会在某些时候覆盖它,我不喜欢这个想法)。
我在 class 中找到了 copmonents
字段,该字段由生成的 Dispose
覆盖处理,所以我只需将这些控件添加到 copmonents
收集,所以它们会自动处理。
毕竟,我也在想,毕竟我把它们添加到我的界面中,所以它们还是添加到component
中。所以我不需要做任何事情。
好的,所以你可以创建虚拟 class:
public class MyLabel : Label
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
}
并且可以在Dispose
方法中设置断点。
将字段的类型更改为 MyLabel
并检查是否调用了该方法,并且在我没有明确调用它们或做任何事情的情况下调用了它。
所以第三种方法是正确的 - 因为它们是作为 Form
控件添加的,所以它们会自动处理。
我有一个 Form
(好吧,我的 window,它继承自 Form
),我想在这里创建一些控件,然后在整个代码中引用它们class.
所以我创建字段:
private Label _someCounter;
private Label _someAnotherCounter;
我初始化它们,随心所欲地使用它们,这很棒。
但我还需要记住 处理 它们,问题是:我该怎么做?我可以想到三种方法:
我在
Dispose
覆盖方法中写了一些代码,由设计者生成(因为设计者可能会在某些时候覆盖它,我不喜欢这个想法)。我在 class 中找到了
copmonents
字段,该字段由生成的Dispose
覆盖处理,所以我只需将这些控件添加到copmonents
收集,所以它们会自动处理。毕竟,我也在想,毕竟我把它们添加到我的界面中,所以它们还是添加到
component
中。所以我不需要做任何事情。
好的,所以你可以创建虚拟 class:
public class MyLabel : Label
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
}
并且可以在Dispose
方法中设置断点。
将字段的类型更改为 MyLabel
并检查是否调用了该方法,并且在我没有明确调用它们或做任何事情的情况下调用了它。
所以第三种方法是正确的 - 因为它们是作为 Form
控件添加的,所以它们会自动处理。