商信互联
本节将展示如何使用模型编辑器定制富文本属性编辑器中的WinForms或ASP.NET项目。
该RichTextPropertyEditor菜单管理器包含一个色带控制或酒吧,和ASPxRichTextPropertyEditor菜单管理器中只包含了功能区控制。
导航到视图| <DetailView> | 物品| <PropertyEditor>节点并设置编辑器的MenuManagerType(WinForms / ASP.NET)。
在ASP.NET应用程序中,功能区控件以“单行模式”显示。若要更改功能区模式或在代码中显示/隐藏功能区控件,请调用ASPxRichTextPropertyEditor的SetRibbonMode方法,如下所示。在这种情况下,请勿使用ASPxRichEdit.RibbonMode属性,因为功能区控件可能显示不正确。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Office.Web;
using DevExpress.Web.ASPxRichEdit;
// ...
public class WebRichTextRibbonController : ObjectViewController<DetailView, Document> {
protected override void OnActivated() {
base.OnActivated();
ASPxRichTextPropertyEditor richTextPropertyEditor = View.FindItem("Text") as ASPxRichTextPropertyEditor;
if (richTextPropertyEditor != null) {
RichEditRibbonMode mode = RichEditRibbonMode.Ribbon;
richTextPropertyEditor.SetRibbonMode(mode);
}
}
}
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Office.Web
Imports DevExpress.Web.ASPxRichEdit
' ...
Public Class WebRichTextRibbonController
Inherits ObjectViewController(Of DetailView, Document)
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
Dim richTextPropertyEditor As ASPxRichTextPropertyEditor = TryCast(View.FindItem("Text"), ASPxRichTextPropertyEditor)
If richTextPropertyEditor IsNot Nothing Then
Dim mode As RichEditRibbonMode = RichEditRibbonMode.Ribbon
richTextPropertyEditor.SetRibbonMode(mode)
End If
End Sub
End Class
设置BOModel | <类别> | 会员| <成员>节点的DocumentStorageFormat属性到您希望用于字符串属性的文档存储格式(RTF或HTML)。
字节数组属性的格式始终为DOCX。
在WinForms应用程序中,富文本编辑器的高度是固定的,并且等于单行编辑器的高度。在ASP.NET应用程序中,富文本编辑器的高度是根据编辑器的内容计算的。指定 视图| <ListView> | 列| <Column>节点的CustomHeight(WinForms / ASP.NET)来更改编辑器的高度。
该RichTextPropertyEditor菜单不显示所有可用工具栏和功能区选项卡。使用静态RichTextPropertyEditor.DefaultRichEditToolbarType属性来自定义工具栏。可用的工具栏和选项卡在RichEditToolbarType枚举中列出。
using DevExpress.XtraRichEdit;
using DevExpress.ExpressApp.Office.Win;
// ...
RichTextPropertyEditor.DefaultRichEditToolbarType =
RichEditToolbarType.Home | RichEditToolbarType.Insert | RichEditToolbarType.File |
RichEditToolbarType.FloatingObject | RichEditToolbarType.Table | RichEditToolbarType.HeaderFooter;
Imports DevExpress.XtraRichEdit
Imports DevExpress.ExpressApp.Office.Win
' ...
RichTextPropertyEditor.DefaultRichEditToolbarType = _
RichEditToolbarType.Home Or RichEditToolbarType.Insert Or RichEditToolbarType.File Or _
RichEditToolbarType.FloatingObject Or RichEditToolbarType.Table Or RichEditToolbarType.HeaderFooter
处理MenuManagerController.CustomizeRichEditToolbarType事件以仅更改特定编辑器的工具栏和选项卡:
访问MenuManagerController并在重写的OnActivated方法中预订其CustomizeRichEditToolbarType事件。
在事件处理程序中,指定CustomizeRichEditToolbarTypeEventArgs.RichEditToolbarType属性。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Office.Win;
using DevExpress.XtraRichEdit;
// ...
public class CustomRichEditController : ViewController {
protected override void OnActivated() {
base.OnActivated();
MenuManagerController controller = Frame.GetController<MenuManagerController>();
if (controller != null) {
controller.CustomizeRichEditToolbarType = Controller_CustomizeRichEditToolbarType;
}
}
private void Controller_CustomizeRichEditToolbarType(object sender, CustomizeRichEditToolbarTypeEventArgs e) {
e.RichEditToolbarType =
RichEditToolbarType.Home | RichEditToolbarType.Insert | RichEditToolbarType.File |
RichEditToolbarType.FloatingObject | RichEditToolbarType.Table | RichEditToolbarType.HeaderFooter;
}
}
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Office.Win
Imports DevExpress.XtraRichEdit
' ...
Public Class CustomRichEditController
Inherits ViewController
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
Dim controller As MenuManagerController = Frame.GetController(Of MenuManagerController)()
If controller IsNot Nothing Then
AddHandler controller.CustomizeRichEditToolbarType, AddressOf Controller_CustomizeRichEditToolbarType
End If
End Sub
Private Sub Controller_CustomizeRichEditToolbarType(ByVal sender As Object, ByVal e As CustomizeRichEditToolbarTypeEventArgs)
e.RichEditToolbarType = _
RichEditToolbarType.Home Or RichEditToolbarType.Insert Or RichEditToolbarType.File Or _
RichEditToolbarType.FloatingObject Or RichEditToolbarType.Table Or RichEditToolbarType.HeaderFooter
End Sub
End Class
您还可以在运行时自定义Bars菜单。结果保存到用户的模型差异中。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Office.Web;
using DevExpress.XtraRichEdit;
using System;
// ...
public class CustomizeRichDocumentSettingController : ViewController<DetailView> {
protected override void OnActivated() {
base.OnActivated();
foreach(ASPxRichTextPropertyEditor editor in View.GetItems<ASPxRichTextPropertyEditor>()) {
editor.CustomizeRichEditDocumentServer = Editor_CustomizeRichEditDocumentServer;
}
}
private void Editor_CustomizeRichEditDocumentServer(object sender, CustomizeRichEditDocumentServerEventArgs e) {
e.RichEditDocumentServer.EmptyDocumentCreated = RichEditDocumentServer_EmptyDocumentCreated;
}
private void RichEditDocumentServer_EmptyDocumentCreated(object sender, EventArgs e) {
RichEditDocumentServer documentServer = (RichEditDocumentServer)sender;
var document = documentServer.Document;
document.Sections[0].Margins.Top = 0.5f;
document.Sections[0].Margins.Left = 0.5f;
document.Sections[0].Margins.Bottom = 0.5f;
document.Sections[0].Margins.Right = 0.5f;
var characterProperties = document.BeginUpdateCharacters(document.Range);
characterProperties.FontName = "Times New Roman";
characterProperties.FontSize = 12;
document.EndUpdateCharacters(characterProperties);
}
protected override void OnDeactivated() {
foreach(ASPxRichTextPropertyEditor editor in View.GetItems<ASPxRichTextPropertyEditor>()) {
editor.CustomizeRichEditDocumentServer -= Editor_CustomizeRichEditDocumentServer;
}
}
}
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Office.Web
Imports DevExpress.XtraRichEdit
' ...
Public Class CustomizeRichDocumentSettingController
Inherits ViewController(Of DetailView)
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
For Each editor As ASPxRichTextPropertyEditor In View.GetItems(Of ASPxRichTextPropertyEditor)()
AddHandler editor.CustomizeRichEditDocumentServer, AddressOf Editor_CustomizeRichEditDocumentServer
Next editor
End Sub
Private Sub Editor_CustomizeRichEditDocumentServer(ByVal sender As Object, ByVal e As CustomizeRichEditDocumentServerEventArgs)
AddHandler e.RichEditDocumentServer.EmptyDocumentCreated, AddressOf RichEditDocumentServer_EmptyDocumentCreated
End Sub
Private Sub RichEditDocumentServer_EmptyDocumentCreated(ByVal sender As Object, ByVal e As EventArgs)
Dim documentServer As RichEditDocumentServer = DirectCast(sender, RichEditDocumentServer)
Dim document = documentServer.Document
document.Sections(0).Margins.Top = 0.5F
document.Sections(0).Margins.Left = 0.5F
document.Sections(0).Margins.Bottom = 0.5F
document.Sections(0).Margins.Right = 0.5F
Dim characterProperties = document.BeginUpdateCharacters(document.Range)
characterProperties.FontName = "Times New Roman"
characterProperties.FontSize = 22
document.EndUpdateCharacters(characterProperties)
End Sub
Protected Overrides Sub OnDeactivated()
For Each editor As ASPxRichTextPropertyEditor In View.GetItems(Of ASPxRichTextPropertyEditor)()
RemoveHandler editor.CustomizeRichEditDocumentServer, AddressOf Editor_CustomizeRichEditDocumentServer
Next editor
End Sub
End Class