本指南提供了创建 自定义控件 —— XRNumericLabel 的一个示例。 此控件继承自 XRLabel (因此,它支持所有由标准标签提供的功能),但只接受数字文本在其中显示。 要查看总说明,请参阅 创建自定义控件。
要创建一个数字标签控件,则执行下列操作。
-
为了新建一个 类库 项目,运行 MS Visual Studio (2005、2008 或 2010),选择 "File | New | Project..." 菜单项。 然后在 New Project(新建项目) 对话框中,选择 "Class Library(类库)" 模板,为新项目键入 "CustomControls" 名称,并单击 OK 按钮。
-
把新添加的类由 Class1 重命名为 XRNumericLabel。
-
把 System.Drawing、System.Windows.Forms、DevExpress.Utils.v10.2、DevExpress.XtraPrinting.v10.2 和 DevExpress.XtraReports.v10.2 程序集添加到项目的 引用 列表中。
-
如果需要指定自定义图标,从而在工具箱中或 Report Explorer(报表资源管理器) 窗口中表示 XRNumericLabel 控件,那么就需要创建一个自定义位图文件 (16x16 像素),并把它添加到项目中。
注意,在把图像文件添加到项目中时,请确定其名称与类名称相匹配,并且把 生成操作(Build Action) 属性值设置为 嵌入的资源(Embedded Resource)。
-
下面的代码展示了 XRNumericLabel 类如何从 XRLabel 类继承,推出了 Number 属性,并重写了 Text 属性来隐藏它。
C# 复制代码 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 Basic 复制代码 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
-
重新生成此项目。 在生成解决方案之后,一个包含数字标签控件的 CustomControls.dll 程序集文件将出现在项目的 "Bin\Debug" 目录中。
现在 XRNumericLabel 控件已经就绪,可以在报表应用程序中使用了。
Show Me |
---|
在 DevExpress Code Central 数据库中可以找到完整的示例项目,网址是 http://www.devexpress.com/example=E57。 取决于目标平台类型 (ASP.NET、WinForms 等),可以在线运行本示例,或者下载自动可执行的示例。 |