Asp.net 3.5控件和组件开发技术系列—服务器控件属性(四)

然后定义一个编辑器,其实所有这些的编辑器功能相当于一个“桥接器”,使属性与自定义 Form 窗体关联起来。代码如下:

/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>

public class CalculatorSelectEditor : System.Drawing.Design.UITypeEditor
{
   public CalculatorSelectEditor()
   {

   }
   public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle
      (System.ComponentModel.ITypeDescriptorContext context)
   {
     return UITypeEditorEditStyle.Modal;
   }

   public override object EditValue(System.ComponentModel.ItypeDescriptor
     Context context,System.IServiceProvider provider,object value)
   {
     IWindowsFormsEditorService service = (IWindowsFormsEditorService)
    provider.GetService(typeof(IWindowsFormsEditorService));

     if (service == null)
     {
       return null;
     }

     FormKeyBoard form = new FormKeyBoard();

     if (service.ShowDialog(form) == DialogResult.OK)
     {
       object strReturn = form.strReturnValue;
       return strReturn;
     }

     return value;
   }
}

此类的功能是弹出一个模式的计算器Form 窗体,与4.5.2.2 节定义的编辑器功能几乎一样,这 里就不作多讲,如果还有不明白的地方请回顾一下前面章节的内容。

最后定义主控件代码类,如下所示:

/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>

[DefaultProperty("Money")]
[ToolboxData("<{0}:CalculatorSelectControl
   runat=server></{0}:CalculatorSelectControl>")]
public class CalculatorSelectControl : WebControl
{
   [Bindable(true)]
   [Category("自定义计算机属性")]
   [DefaultValue("")]
   [Localizable(true)]
   [Editor(typeof(CalculatorSelectEditor),typeof(System.Drawing.Design.  UITypeEditor))]
   [Description("请输入金额")]
   public string Money 
   {
     get
     {
       string s = (string)ViewState["Money"];
       return ((s == null) ? "" : s);
     }

     set
     {
       ViewState["Money"] = value;
     }
   }
   //… …
}

时间: 2024-08-03 15:58:38

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(四)的相关文章

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(三)

4.5.2.2 定制模态属性编辑器 这一节我们学习定制另一种属性编辑器:模态编辑器,在此编辑器中单击一个按钮将弹出一个 窗体,从窗体选择数据后会把值返回到属性窗口中.最重要的一点是我们可以自定义此选择数据的 模态窗口内容,比上面的集合编辑器更灵活.还是先看一下效果图,如图4-20 所示. 开发技术系列-服务器控件属性(三)-"> 图4-20 模态属性编辑器 上图是以一个表示选择食品(水果/ 肉类/ 蔬菜等)的属性为例而定制的一个模态选择窗口, 单击属性旁边的"- "按钮

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(一)

本章内容 4.1 控件属性的作用 4.2 简单属性 4.3 属性的设计时特性 4.4 复杂属性 4.5 深入研究--定制自己的属性编辑器 4.6 类型转换器 4.7 实现自定义属性 4.1 控件属性的作用 开发技术系列-服务器控件属性(一)-"> 属性.方法和事件是控件使用者与控件交互的接口.本节主要介绍控件属性.属性分为系统属 性和自定义的属性.

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(五)

4.7 实现自定义属性 在本章前面的章节中我们实现的许多功能都是借助于系统提供的设计时元数据属性支持实现的 ,如: 显示属性描述信息的Description 属性 [Description("描述文本")] 指定属性在属性窗口中类别的Category 设计属性 [Category(" 属性窗口中的类别名称")] 指定属性编辑器的Editor 设计属性 [Editor(typeof(FileNameEditor), typeof(UITypeEditor))] 指定属

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(二)

4.4.3.2 使用ControlBuilder解析 复杂内容 通过 System.Web.UI.ControlBuilder 类定制页面解析逻辑,可以定制任意类型的标记,而不 像重写AddParseSubObject 方法那样限定子标记必须是子控件,且必须有前缀和runat 属性,下面 直接通过一个例子来说明一下此类的用法. 首先建立两个文件 ScriptItem.cs 和ScriptItemCollection.cs ,分别定义ScriptItem 类和 ScriptItemCollecti

Asp.net 3.5控件和组件开发技术系列—服务器控件开发中的调试技术

本章内容 2.1 预置代码示例 2.2 调试页面服务端代码 2.3 服务器控件的调试 2.4 JavaScript 脚本调试方法 2.5 Ajax Library 对JavaScript调试支持 2.1 预置代码示例 熟悉ASP.NET 开发的读者朋友可能对于服务器控件的调试技术更容易上手,不过如果您刚刚接 触ASP.NET 也没关系,本章会从最基本的调试开始讲解. 在调试之前,要先建立一个调试控件的项目环境.关于如何建立环境在这里就不讲了,第1 章 已经讲得非常详细了. 首先在Web 控件项目

Asp.net 3.5控件和组件开发技术系列—从零开始开发服务器控件(下)

TextBoxHeight属性主要用来设置显示值的子控件TextBox的高度.与LabelHeight功能相似. /// <summary> /// 获得本书更多内容,请看: /// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx /// </summary> private Unit unitTextBoxHeight = Unit.Empty; [Category("LabelTextBox

庖丁解牛Asp.net3.5控件和组件开发技术系列—事件和数据回发机制(三)

5.3.3 复合控件的事件处理 复合控件的事件处理按实现功能可分为三种: (1)复合控件中子控件的内部事件处理. (2)包含处理机制 -- 子控件事件中调用主控件委托的事件实例. (3)冒泡处理机制. 接下来的三节就分别说明这三种事件处理方式机制是如何实现的. 5.3.3.1 复合控件中子控件的内部事件处理 这是最简单的处理方式.复合控件中的子控件事件是单独存在的,与主控件没有任何关系,并且它们各自完成自己的功能,使用方法也很简单,就像以往直接在页面中使用事件一样. 这一节主要以Calculat

庖丁解牛Asp.net3.5控件和组件开发技术系列—页面状态机制(四)

6.6 清除页面状态 在控件开发时,有时候需要清除子控件的页面状态,比如在创建子控件时,以下是一个在数据绑定时清除视图并创建子控件的应用场景: /// <summary> /// 获得本书更多内容,请看: /// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx /// </summary> public override void DataBind() { base.OnDataBinding(Event

ASP.NET Atlas简单控件介绍之两个基类

asp.net|控件 ASP.NET Atlas中引入了客户端控件的概念,用面向对象思想将客户端JavaScript将要操作的DOM元素封装起来,带来了更清晰的代码模型以及更好的可复用性(不足之处是效率有所降低).Atlas的客户端控件是连接JavaScript与DOM元素的桥梁,我们应该尽可能的使用客户端控件与DOM元素打交道,也就是以Atlas的方法来编写我们的程序.同时,Atlas对JavaScript面向对象方面的强大扩展(请参考:ASP.NET Atlas对JavaScript的扩展)