officefileapi-devexpress-dot-xtrarichedit-dot-services-52e57fcd.md
Defines a service that is used to create RichEdit commands.
Namespace : DevExpress.XtraRichEdit.Services
Assembly : DevExpress.RichEdit.v25.2.Core.dll
NuGet Package : DevExpress.RichEdit.Core
[ComVisible(true)]
public interface IRichEditCommandFactoryService
<ComVisible(True)>
Public Interface IRichEditCommandFactoryService
The code below implements the IRichEditCommandFactoryService descendant, which generates customized SaveDocumentCommand and SaveDocumentAsCommand commands. The command descendants override the ExecuteCore methods to display a message after a document has been saved. The IsModified internal property indicates unsaved changes in the document. If this property is not changed to false after a document is saved, it signals that the save action failed.
public class CustomRichEditCommandFactoryService : IRichEditCommandFactoryService {
readonly IRichEditCommandFactoryService service;
readonly RichEditControl control;
public CustomRichEditCommandFactoryService(RichEditControl control, IRichEditCommandFactoryService service) {
DevExpress.Utils.Guard.ArgumentNotNull(control, "control");
DevExpress.Utils.Guard.ArgumentNotNull(service, "service");
this.control = control;
this.service = service;
}
public RichEditCommand CreateCommand(RichEditCommandId id) {
if(id == RichEditCommandId.FileSaveAs) {
return new CustomSaveDocumentAsCommand(control);
}
if(id == RichEditCommandId.FileSave) {
return new CustomSaveDocumentCommand(control);
}
return service.CreateCommand(id);
}
}
public class CustomSaveDocumentCommand : SaveDocumentCommand {
public CustomSaveDocumentCommand(IRichEditControl richEdit) : base(richEdit) { }
protected override void ExecuteCore() {
base.ExecuteCore();
if(!DocumentServer.Modified) {
MessageBox.Show("Document is saved successfully");
}
}
}
public class CustomSaveDocumentAsCommand : SaveDocumentAsCommand {
public CustomSaveDocumentAsCommand(IRichEditControl richEdit) : base(richEdit) { }
protected override void ExecuteCore() {
DocumentServer.Modified = true;
base.ExecuteCore();
if(!DocumentServer.Modified) {
MessageBox.Show("Document is saved successfully");
}
}
}
Public Class CustomRichEditCommandFactoryService
Implements IRichEditCommandFactoryService
Private ReadOnly service As IRichEditCommandFactoryService
Private ReadOnly control As RichEditControl
Public Sub New(ByVal control As RichEditControl, ByVal service As IRichEditCommandFactoryService)
DevExpress.Utils.Guard.ArgumentNotNull(control, "control")
DevExpress.Utils.Guard.ArgumentNotNull(service, "service")
Me.control = control
Me.service = service
End Sub
Public Function CreateCommand(ByVal id As RichEditCommandId) As RichEditCommand Implements IRichEditCommandFactoryService.CreateCommand
If id.Equals(RichEditCommandId.FileSaveAs) Then
Return New CustomSaveDocumentAsCommand(control)
End If
If id.Equals(RichEditCommandId.FileSave) Then
Return New CustomSaveDocumentCommand(control)
End If
Return service.CreateCommand(id)
End Function
End Class
Public Class CustomSaveDocumentCommand
Inherits SaveDocumentCommand
Public Sub New(ByVal richEdit As IRichEditControl)
MyBase.New(richEdit)
End Sub
Protected Overrides Sub ExecuteCore()
MyBase.ExecuteCore()
If (Not DocumentServer.Modified) Then
MessageBox.Show("Document is saved successfully")
End If
End Sub
End Class
Public Class CustomSaveDocumentAsCommand
Inherits SaveDocumentAsCommand
Public Sub New(ByVal richEdit As IRichEditControl)
MyBase.New(richEdit)
End Sub
Protected Overrides Sub ExecuteCore()
DocumentServer.Modified = True
MyBase.ExecuteCore()
If (Not DocumentServer.Modified) Then
MessageBox.Show("Document is saved successfully")
End If
End Sub
End Class
The following code replaces the IRichEditCommandFactoryService service with its descendant.
richEditControl.Text = "A message box is displayed when a document is saved on the 'Save' or 'Save As' button click since custom commands are used.";
var myCommandFactory = new CustomRichEditCommandFactoryService(richEditControl, richEditControl.GetService<IRichEditCommandFactoryService>());
richEditControl.ReplaceService<IRichEditCommandFactoryService>(myCommandFactory);
richEditControl.Text = "A message box is displayed when a document is saved on the 'Save' or 'Save As' button click since custom commands are used."
Dim commandFactory = New CustomRichEditCommandFactoryService(richEditControl, richEditControl.GetService(Of IRichEditCommandFactoryService)())
richEditControl.ReplaceService(Of IRichEditCommandFactoryService)(commandFactory)
See Also
IRichEditCommandFactoryService Members