如何管理一个WinForms用户控件中的一次性对象

本文关键字:控件 用户 对象 一次性 WinForms 何管理 管理 一个 | 更新日期: 2023-09-27 17:54:36

我想弄清楚我是否可以在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
}

如何管理一个WinForms用户控件中的一次性对象

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

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

链接这里:我如何添加Dispose功能到c# UserControl?