设计时支持:如何获取环境数据

目前的软件,对于人机交互得要求越来越高,微软在设计器中提供的控件已经无法满足日常开发的需要。为了应对这种局面,通常的做法是购买第三方或者自己开发。此处我们不谈论这两种做法的优点和缺点。但是在日常开发中,我们肯定离不开开发一些小控件,如果具备微软常用空间的特性和功能,以便降低使用者的洪沟?更好的集成到Visual Studio 中?
例如下图所示

拖放一个Button到窗体上,鼠标右键点击,我们会看到“重置”菜单,当用户输入了某个值以后,发现这不是他想要的,这是可以使用重值功能恢复到初始状态。这是AmbientValueAttribute的功能表现。

MSDN上有句话介绍了此特性标记的主要功能和使用方式:
“通常,可视化设计器使用 AmbientValueAttribute 属性来决定为属性永久保存的值。这通常是一个使属性从另一个源获取其值的值。周围值的一个示例是 Color.Empty 作为 BackColor 属性的周围值。如果您在窗体上具有一个控件,并且该控件的 BackColor 属性被设置为与该窗体的 BackColor 属性不同的颜色,则您可以通过将该控件的 BackColor 设置为 Color.Empty 来将该控件的 BackColor 属性重置为该窗体的颜色。”

 1 [AmbientValue("NoName")]
 2         public string Title {
 3             get {
 4                 if (_title == "NoName" && Parent != null) {
 5                     Form f = Parent as Form;
 6                     _title = f.Text;
 7                 }
 8                 return _title;
 9             }
10             set { _title = value; }
11         }

以上代码当重置操作时,控件将获得承载它的窗体容器,使用Form.Text的值填充Title属性。它的使用并不复杂,既可以标识在类上也可以标识属性上。小小的功能,可以改善用户体验,何乐而不为呢?


 

posted @ 2007-08-13 17:31  大约在冬季  阅读(324)  评论(0编辑  收藏  举报