2

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

1 回答 1

2

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

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

链接在这里:如何将 Dispose 功能添加到 C# UserControl?

于 2013-01-19T05:18:35.087 回答