当前位置:  开发笔记 > 编程语言 > 正文

WinForm UserControl的通用基类

如何解决《WinFormUserControl的通用基类》经验,为你挑选了2个好方法。

我为WinForm UserControl创建了一个通用基类:

public partial class BaseUserControl : UserControl
{
    public virtual void MyMethod() 
    { 
        // some base stuff here 
    }
}

以及基于以下内容的UserControl:

public partial class MyControl : BaseUserControl
{
    public override void MyMethod() 
    { 
        // some specific stuff here 
        base.MyMethod();
    }
}

它工作正常,但MyControl无法在VisualStudio Designer中进行编辑,因为它表示无法加载基类.我试图定义另一个类BaseUserControl,非泛型,希望它会加载它,但这个技巧似乎不起作用.

我已经有一个解决方法:定义一个接口,IMyInterface ,然后创建我的控件

public partial class MyControl : UserControl, IMyInterface

但是我失去了我的基本虚拟方法(不是很重要,但仍然......).

有没有办法为UserControl创建基础泛型类,有可能在VisualStudio Designer中编辑它?



1> bernhardrusc..:

我们正在做同样的事情,我们首先专门研究一个类,然后从专门的类派生出来.使用示例中的代码,这意味着:

public partial class UserControl : UserControlDesignable 
{

...
}
public class UserControlDesignable : BaseUserControl { }

设计师有时仍然表现得很脆弱 - 但大部分时间它都有效.



2> Frederik Ghe..:

您必须通过添加继承自通用基本表单的"常规"类来欺骗设计人员.然后,您的可设计表单应该继承自此类.因此,以下2个类定义位于同一文件中.您必须确保从通用基本用户控件继承的类是文件中的最后一个类.

public MyForm : EditableCustomerForm
{}

public EditableCustomerForm : GenericForm
{}

设计器将在它遇到的代码文件中显示第一个类.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有