加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

WinForms和ASP.NET自定义控件的通用代码

发布时间:2020-12-16 09:48:50 所属栏目:asp.Net 来源:网络整理
导读:假设我想开发一个自定义的纯图形控件,可以在WinForms和ASP.NET中使用.控件将根据某些属性设置和相关规则渲染图像. 显然,我可以将WinForms版本的代码复制到ASP.NET版本,但这意味着如果发现错误或更改规则,我有两个版本需要更新. 我可以编写一个核心类,需要各
假设我想开发一个自定义的纯图形控件,可以在WinForms和ASP.NET中使用.控件将根据某些属性设置和相关规则渲染图像.

显然,我可以将WinForms版本的代码复制到ASP.NET版本,但这意味着如果发现错误或更改规则,我有两个版本需要更新.

我可以编写一个核心类,需要各种属性和规则,WinForms和ASP.NET控件类将有一个指向这个核心类的属性,如:

public class MyControlCore
{
    // all properties and control rules

    public void PaintTo(Graphics graphics)
    {
        // rendering of control
    }
}

public class MyWinFormsControl: Control
{
    public MyWinFormsControl(Control parent): base(parent)
    {
        CoreControl = new MyControlCore();
    }

    public MyControlCore CoreControl { get; private set; }

    protected override OnPaint(object sender,PaintEventArgs e)
    {
        CoreControl.PaintTo(e.Graphics);
    }
}

这将工作,但在属性网格中,我将获得一个属性CoreControl,包含自定义属性.有没有办法让属性网格显示MyControlCore属性,而不是具有子属性的CoreControl属性?

我想我也许可以用TypeDescriptionProvider和相关的类完成这个,但我不确定如何继续,如果它甚至会给我我想要的结果.我意识到这只会对设计师有所帮助,但那没关系.

解决方法

还有另一种选择.您可以使用 partial classes并将公共代码放在可以从两个项目链接到的单个文件中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读