惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
The Register - Security
The Register - Security
Stack Overflow Blog
Stack Overflow Blog
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
S
SegmentFault 最新的问题
V2EX - 技术
V2EX - 技术
Hacker News: Ask HN
Hacker News: Ask HN
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Proofpoint News Feed
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
AI
AI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
C
Cybersecurity and Infrastructure Security Agency CISA
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
U
Unit 42
腾讯CDC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
H
Help Net Security
Recent Announcements
Recent Announcements
P
Privacy & Cybersecurity Law Blog
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 热门话题
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Heimdal Security Blog
博客园 - 聂微东
S
Securelist
大猫的无限游戏
大猫的无限游戏
Cloudbric
Cloudbric
Cisco Talos Blog
Cisco Talos Blog

博客园 - 吕艳阳

asp.net 重新启动应用程序 eWebEditor在线文本编辑器最新版(V4.6) 用DataReader 分页与几种传统的分页方法的比较 CodeSmith实体类模板 Oracle中取余的方法 (转)C#新特性:可空类型 (转)asp.net自定义控件(数据绑定) javascript事件列表解说 返回数据库内所有表的字段 网线水晶头的接法 Access密码破解工具 简单介绍一下asp.net中DataGrid的使用(视频教程) Asp.net中文件的上传和下载(视频教程) 如何在asp中,使用vb来开发dll组件 (提供视频下载) 操作系统常用技巧 Oracle9i 用户登录存储过程 Oracle 冷备份操作 Oralce9i 获取单个字段的值 Oracle 9i 返回一个记录集的方法
(转)asp.net控件设计时支持(3)
吕艳阳 · 2008-09-24 · via 博客园 - 吕艳阳
       

示例代码

       都已经忘了更新了,感觉非常愧疚啊.现在努力补上

上篇很偷懒的写了自动格式设置.

把没讲完的补上.

一.智能标记

先看一张图.

GridView右侧的小三角可以很轻松的帮助我们设置常用的属性,如下面的启动分页,启用排序等,通过这样的方式我们可以很快的完成工作。我们称这样的任务菜单为智能标记.

下面来看看如何实现

1.重写ControlDesigner的ActionLists属性

你必须重写这个属性,返回你自定义的智能标记集合(即DesignerActionListCollection),这里假设CustomControlActionList为自定义的智能

    public class SampleControlDesigner : ControlDesigner
    
{
        
public SampleControlDesigner()
            : 
base()
        
{
        }


        
//创建一个自定义操作列表集合
        public override DesignerActionListCollection ActionLists
        
{
            
get
            
{
                DesignerActionListCollection actionLists 
= new DesignerActionListCollection();
                actionLists.Add(
new CustomControlActionList(this));

                
return actionLists;
            }

        }
  
    }

2.CustomControlActionList 自定义项列表

2.1项列表分类

(1)标题面板
(2)属性面板
(3)方法面板

类图如下

看个效果图,你就明白怎么回事了

2.2实现

(1)

继承DesignerActionList类,重写GetSortedActionItems方法添加自定义项面板集合,即2.1的三种项面板

        public override DesignerActionItemCollection GetSortedActionItems()
        
{
            
if (items == null)
            
{
                items 
= new DesignerActionItemCollection();
                
// 添加标题面板
                items.Add(new DesignerActionHeaderItem("快速设置面板测试:"));
                
//添加属性相关面板
                items.Add(new DesignerActionPropertyItem("Visible",
                         
"是否显示"));
                items.Add(
new DesignerActionPropertyItem("Width",
                        
"设置宽度"));
                items.Add(
new DesignerActionPropertyItem("Height",
                       
"设置高度"));
                
// 添加方法相关面板

                items.Add(
new DesignerActionMethodItem(this"FormatBlue""定义背景为蓝色"true));
                items.Add(
new DesignerActionMethodItem(this"FormatRed""定义背景为红色"true));
                items.Add(
new DesignerActionMethodItem(this"FormatWhite""定义背景为白色"true));
                
            }

            
return items;
        }


(2)属性,方法项面板的实现如果你设置属性的话,则必须在CustomControlActionList定义属性,方法也相同,代码如下


以上步骤完成以后就大功告成了,接着则与相关控件关联起来就可以了,效果图在上面已经看过了.

[DesignerAttribute(typeof(SampleControlDesigner))]

二.模板编辑器

上面的模板编辑界面相信大家都很熟悉吧.设置支持怎么少的了模板呢.设置时模板编辑实现比较简单,下面来看下如何实现

这里自定义的模板控件不再列出

1.重写ControlDesigner类的TemplateGroups返回自定义模板组集合即(TemplateGroupCollection)

添加步骤跟表格的添加类似,td add tr然后table add td
模板则是TemplateGroup add TemplateDefinition 然后TemplateGroupCollection add TemplateGroup

代码如下

这里注意TemplateDefinition构造函数的最后一个属性,true则在设计时编辑只能添加服务器控件

2.初始化启用设计时模板编辑

我们还需要在Initialize方法中调用SetViewFlags方法启用设计时模板编辑

        public override void Initialize(IComponent component)
        
{
         
            
base.Initialize(component);
         
            SetViewFlags(ViewFlags.TemplateEditing, 
true);
        }

3.提供默认矩形标识符,为控件提供说明

如下图,DataList默认情况下给予如下提示

我们可以通过重写GetDesignTimeHtml方法调用CreatePlaceHolderDesignTimeHtml方法创建一个矩形标识符来实现

        public override string GetDesignTimeHtml()
        
{
            
return CreatePlaceHolderDesignTimeHtml("右击或选择编辑模板面板来编辑模板内容");
        }

好了,完成了,接着要做的就是与相关模板控件关联起来了

先写到这里,估计大家也不会可以留意这方面的东西,平时大家都太忙了,上面功能有跟没有没多大关系,不过常用控件属性和功能,有设计时支持一定会让使用的更加有效. 明天继续写

本文转自 http://www.cnblogs.com/Clingingboy/archive/2007/05/14/739462.html Clingingboy