本指南提供了创建 自定义控件 —— XRNumericLabel 的一个示例。 此控件继承自 XRLabel (因此,它支持所有由标准标签提供的功能),但只接受数字文本在其中显示。 要查看总说明,请参阅 创建自定义控件

要创建一个数字标签控件,则执行下列操作。

  1. 为了新建一个 类库 项目,运行 MS Visual Studio (2005、2008 或 2010),选择 "File | New | Project..." 菜单项。 然后在 New Project(新建项目) 对话框中,选择 "Class Library(类库)" 模板,为新项目键入 "CustomControls" 名称,并单击 OK 按钮。

  2. 把新添加的类由 Class1 重命名为 XRNumericLabel

  3. System.DrawingSystem.Windows.FormsDevExpress.Utils.v10.2DevExpress.XtraPrinting.v10.2DevExpress.XtraReports.v10.2 程序集添加到项目的 引用 列表中。

  4. 如果需要指定自定义图标,从而在工具箱中或 Report Explorer(报表资源管理器) 窗口中表示 XRNumericLabel 控件,那么就需要创建一个自定义位图文件 (16x16 像素),并把它添加到项目中。

    注意,在把图像文件添加到项目中时,请确定其名称与类名称相匹配,并且把 生成操作(Build Action) 属性值设置为 嵌入的资源(Embedded Resource)

  5. 下面的代码展示了 XRNumericLabel 类如何从 XRLabel 类继承,推出了 Number 属性,并重写了 Text 属性来隐藏它。

    C#CopyCode image复制代码
    using System;
    using System.Drawing;
    using System.ComponentModel;
    using System.Windows.Forms;
    using DevExpress.XtraReports;
    using DevExpress.XtraReports.UI;
    using DevExpress.XtraReports.Localization;
    //...
    
    namespace CustomControls {
        [DefaultBindableProperty("Number"), ToolboxBitmap(typeof(XRNumericLabel))]
        public class XRNumericLabel : XRLabel {
            private int number;
    
            [SRCategory(ReportStringId.CatData), DefaultValue(0), Bindable(true)]
            public virtual int Number {
                get { return number; }
                set { number = value; }
            }
    
            [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), Bindable(false)]
            public override string Text {
                get { return number.ToString(); }
                set {
                    int i;
    
                    if (int.TryParse(value, out i)) {
                           number = i;
                    }
                    else {
                        throw new ArgumentException("This text can't be converted to a number!");
                    }
                }
            }
        }
    }
    
    Visual BasicCopyCode image复制代码
    Imports System
    Imports System.Drawing
    Imports System.ComponentModel
    Imports System.Windows.Forms
    Imports DevExpress.XtraReports
    Imports DevExpress.XtraReports.UI
    Imports DevExpress.XtraReports.Localization
    '...
    
    Namespace CustomControls
        <DefaultBindableProperty("Number"), ToolboxBitmap(GetType(XRNumericLabel))> _
        Public Class XRNumericLabel
            Inherits XRLabel
            Private myNumber As Integer
    
            <SRCategory(ReportStringId.CatData), DefaultValue(0), Bindable(True)> _
            Public Overridable Property Number() As Integer
                Get
                    Return myNumber
                End Get
                Set(ByVal value As Integer)
                    myNumber = Value
                End Set
            End Property
    
            <Browsable(False), EditorBrowsable(EditorBrowsableState.Never), Bindable(False)> _
            Public Overrides Property Text() As String
                Get
                    Return myNumber.ToString()
                End Get
                Set(ByVal value As String)
                    Dim i As Integer
    
                    If Integer.TryParse(Value, i) Then
                        myNumber = i
                    Else
                        Throw New ArgumentException("This text can't be converted to a number!")
                    End If
                End Set
            End Property
        End Class
    End Namespace
    
  6. 重新生成此项目。 在生成解决方案之后,一个包含数字标签控件的 CustomControls.dll 程序集文件将出现在项目的 "Bin\Debug" 目录中。

现在 XRNumericLabel 控件已经就绪,可以在报表应用程序中使用了。

CodeCentralShow Me

在 DevExpress Code Central 数据库中可以找到完整的示例项目,网址是 http://www.devexpress.com/example=E57。 取决于目标平台类型 (ASP.NET、WinForms 等),可以在线运行本示例,或者下载自动可执行的示例。

Expand image参阅