是否有必要对winform控件调用dispose



假设我有一个简单的用户控件,从代码后面添加了一个picturebox:

public partial class UserControlBase : UserControl
{
    public UserControlBase()
    {
        InitializeComponent();
        this.BackColor = Color.White;
        this.Size = new System.Drawing.Size(1280, 1048);
        // Logo
        PictureBox pbLogo = new PictureBox();
        pbLogo.Name = "pbLogo";
        pbLogo.BackgroundImage = Properties.Resources.Logo;
        pbLogo.Dock = DockStyle.Top;
        pbLogo.Size = new System.Drawing.Size(1280, 162);
        pbLogo.BackgroundImageLayout = ImageLayout.Center;
        this.Controls.Add(pbLogo);

我是否必须重写UserControlBase上的dispose方法并在picturebox上调用.dispose()?还是它最终会被自己清理掉?

根据MSDN文档,Control.Dispose负责所有子控件:

释放控件及其子控件使用的非托管资源,也可以选择释放托管资源。

因此,假设包含UserControl的表单被处理,那么您的UserControl及其所有子级也将被处理。

编辑:我应该补充一点,只有当您的UserControl在处理表单时仍然是表单的子级时,这才是真的。如果您将其从控制层次结构中删除,则您有责任自己处理它。但即便如此,处理掉UserControl也会处理掉它的所有子代。

最新更新