DesignerAttribute这个特性类到底有什么用?

netcoder 2011-02-15 02:10:45
比如下面的代码,一个普通的UserControl1,使用了DesignerAttribute之后,这个UserControl1会有哪些变化?
MSDN上写的我看不明白,哪位老师能简单易懂的说说,能举例子就更好了。
谢谢!
[Designer(typeof(IRootDesigner))]
public partial class UserControl1 : UserControl
...全文
428 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcoder 2011-02-16
  • 打赏
  • 举报
回复
研究DesignerHosting这个例子,对于其中的Custom RootDesigner有些疑问,请帮忙看看

http://topic.csdn.net/u/20110216/09/9ba77f99-ad5d-4bf1-bf0e-ee1ef40c2a72.html
testtestett 2011-02-15
  • 打赏
  • 举报
回复
只为设计器服务的一个东西而已
yizhili 2011-02-15
  • 打赏
  • 举报
回复
WPF 也有很多设计时功能的,但好像VS支持的不大好
我3楼提到的编辑器就是利用 WPF 的设计时特性做的,在 Blend 2 里效果很棒,但 VS 2008 里就差一些了,却也不是完全不能用

[Quote=引用 15 楼 dobzhansky 的回复:]

.net 设计时体系可以用在自己的程序中,
做什么表单设计器, 报表设计器啦,
作为一个程序结构, 也有好多可以借鉴的东西.
比如那个
IServiceProvider 机制, 现在用了好多.

对于 winform 的, .net 类库中包含了大量的设计时支持,
只缺少一个 代码反序列化工具, 就是分析代码文件产生 CodeCompileUnit 的设施.
不过这个可以从 M……
[/Quote]
Dobzhansky 2011-02-15
  • 打赏
  • 举报
回复
.net 设计时体系可以用在自己的程序中,
做什么表单设计器, 报表设计器啦,
作为一个程序结构, 也有好多可以借鉴的东西.
比如那个
IServiceProvider 机制, 现在用了好多.

对于 winform 的, .net 类库中包含了大量的设计时支持,
只缺少一个 代码反序列化工具, 就是分析代码文件产生 CodeCompileUnit 的设施.
不过这个可以从 Mono 中借用.

对于 asp.net 和 wpf 就没那么幸运了,
大量的设计时功能都实现在 vs 中了.
netcoder 2011-02-15
  • 打赏
  • 举报
回复
DesignerHosting 正在看,shapedesigner 先记下来。
贴子先留着,对Designer有兴趣的都来讨论讨论。
Dobzhansky 2011-02-15
  • 打赏
  • 举报
回复
比较好的例子, 微软有几个

http://msdn.microsoft.com/msdnmag/issues/06/03/DesignerHosting/default.aspx
http://windowsclient.net/articles/shapedesigner.aspx

用心把这2个看明白, 之后就知道该学哪些东西了.
netcoder 2011-02-15
  • 打赏
  • 举报
回复
正在做一个东东,类似Designer,这几天认识了大量的.NET类,头也晕晕的。
yizhili 2011-02-15
  • 打赏
  • 举报
回复
唔,我过于激动了
原来我用的都是 EditorAttribute,DesignerAttribute 完全没用过呢
Dobzhansky 2011-02-15
  • 打赏
  • 举报
回复
Designer 有 Design verb 和 design action 用来提供设计时动作.
Dobzhansky 2011-02-15
  • 打赏
  • 举报
回复
你要做 Designer 不?

.net 的设计时系统是一个很大的东西
资料比较零散且少.

netcoder 2011-02-15
  • 打赏
  • 举报
回复
谢谢3位的回答,尤其是 Dobzhansky 。
希望能有例子出现,就好比Dobzhansky说的,在VS设计器里,右键这个UserControl1,在弹出的上下文菜单中,添加自定义的菜单项。
yizhili 2011-02-15
  • 打赏
  • 举报
回复
不会对你的 UserControl1 本身产生作用
具体能干什么,现在手边没例子没环境,晚上再看看
Dobzhansky 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 netcoder 的回复:]

不好意思,我还是不明白。
一个普通的UserControl1,使用了DesignerAttribute之后,这个UserControl1会有哪些变化?
或者说,给这个UserControl1加上DesignerAttribute特性,代码作者的目的是什么?
[/Quote]目的是增加设计时功能的.

举个例子, winform 的 DataGridView用过吧,
当你拖入窗口时, 选中 datagridview , 后, 会有一些上下文菜单出来,
让你设定列, 及其绑定数据.

其他控件也一样, 都有不同的设计时功能需求.

这些功能在运行时是不需要的. 所以分离到了其他地方去实现.
.net 类库的直接分离到了另一个程序集中实现大多数设计时功能.
System.Design.dll 中.

如果你只是使用一个控件(组件)类, 不需要关注这个.

如果你是控件(组件)类的作者,
设计一个个性化的设计时支持体系将使你的类型更友好, 使用更方便.

在设计时需要而运行时不需要的,
还有

[Editor( 用于指定属性编辑器
[Serializer 用于指定代码序列化

.
孟子E章 2011-02-15
  • 打赏
  • 举报
回复
DesignerAttribute属性只在VS里面设计时有用,
netcoder 2011-02-15
  • 打赏
  • 举报
回复
不好意思,我还是不明白。
一个普通的UserControl1,使用了DesignerAttribute之后,这个UserControl1会有哪些变化?
或者说,给这个UserControl1加上DesignerAttribute特性,代码作者的目的是什么?
yizhili 2011-02-15
  • 打赏
  • 举报
回复
曾经用它和Blend实现过很给力的2D动作、场景编辑器
wuyq11 2011-02-15
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.designerattribute(v=vs.80).aspx
控件属性设置
Dobzhansky 2011-02-15
  • 打赏
  • 举报
回复
这个是给设计时用的,
比如你在 vs 中打开 UserControl1 进行可视化设计时,
vs 就会创建一个 Designer 属性指定的类

由这个类来提供一下设计时功能.

IRootDesigner 是一个接口, 你的那个有错误, 必须指定一个实现类.

IRootDesigner 是根设计器类接口, 就是在 vs 中打开 UserControl1 所在类时使用的,
还有一种是 IDesigner 接口, 当这个控件被放到其他窗口和界面上时用的.

.net 里头的所有控件(组件)都有 Desinger 属性设定.

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧