假设我有一个简单的用户控件,后面的代码添加了一个图片框:
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方法并在图片框上调用.dispose()?或者它最终会自行清理?
答案 0 :(得分:3)
根据MSDN documentation,Control.Dispose
负责所有子控件:
释放Control及其子控件使用的非托管资源,并可选择释放托管资源。
因此,假设包含UserControl
的表单已被处理,您的UserControl
及其所有子项也将被处理。
编辑:我应该补充一点,只有在表单处理时UserControl
仍然是表单的子级时才会出现这种情况。如果将其从控件层次结构中删除,则您自己负责处理它。但即便如此,处置UserControl
也将处置其所有子女。