如何在WinForms UserControl中管理一次性对象?

时间:2013-01-19 05:16:58

标签: c# winforms user-controls dispose

我想知道我是否可以在UserControl中管理一次性资源。我通过在父表单中管理它来解决这个问题,但它似乎应该是可行的。

我感觉到的问题是我无法覆盖Dispose,因为UserControl实现了它,但它不是虚拟的。

有没有办法解决这个问题而不将逻辑委托给父表单?

public partial class MyControl : UserControl {
  MyContext context;
  public void Add(Widget widget) {
    if(this.context== null)
      this.context= new MyContext();
    context.Add(objectToAdd);
  }
  public void Save() {
    if(context!= null)
      context.Save();
  }
  // --> I'd like to override Dispose() so I can call context.Dispose()
  //     but I can't because UserControl implements it and it is not virtual
}

1 个答案:

答案 0 :(得分:2)

在这种情况下,我将生成的Dispose方法移动到主文件并进行扩展。 Visual Studio尊重这一点。

另一种方法是使用部分方法(C#3.0)。

链接到这里:How do I add Dispose functionality to a C# UserControl?