SaveDocumentAsCommand Class
Invokes the File dialog that prompts for a file name, and saves a document in a file with the specified name and format.
Namespace: DevExpress.XtraRichEdit.Commands
Assembly:
DevExpress.RichEdit.v23.1.Core.dll
Declaration
public class SaveDocumentAsCommand :
RichEditMenuItemSimpleCommand
Public Class SaveDocumentAsCommand
Inherits RichEditMenuItemSimpleCommand
To adjust the SaveAs dialog settings or to accomplish other specific tasks you can substitute the default command with your own custom descendant.
A custom command inherits from the SaveDocumentAsCommand
class and overrides the protected ExecuteCore method. To substitute a default command with a custom command, create a new command factory - the class that implements the IRichEditCommandFactoryService interface and intercepts a call that creates a SaveDocumentAsCommand command. Register the new command factory via the IRichEditDocumentServer.ReplaceService<T> method.
The technique is illustrated in the following code snippet.
View Example
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);
return service.CreateCommand(id);
}
}
public class CustomSaveDocumentAsCommand : SaveDocumentAsCommand
{
public CustomSaveDocumentAsCommand(IRichEditControl control)
: base(control) {}
protected override void ExecuteCore()
{
SaveFileDialog dialog = new SaveFileDialog
{
Filter = "Rich Text Format Files (*.rtf)|*.rtf|All Files (*.*)|*.*",
FileName = "SavedDocument.rtf",
RestoreDirectory = true,
CheckFileExists = false,
CheckPathExists = true,
OverwritePrompt = true,
DereferenceLinks = true,
ValidateNames = true,
AddExtension = false,
FilterIndex = 1
};
dialog.InitialDirectory = "C:\\Temp";
if (dialog.ShowDialog() == DialogResult.OK)
{
((RichEditControl)this.Control).SaveDocument(dialog.FileName, DocumentFormat.Rtf);
}
//base.ExecuteCore();
}
}
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 = RichEditCommandId.FileSaveAs Then
Return New CustomSaveDocumentAsCommand(control)
End If
Return service.CreateCommand(id)
End Function
End Class
Public Class CustomSaveDocumentAsCommand
Inherits SaveDocumentAsCommand
Public Sub New(ByVal control As IRichEditControl)
MyBase.New(control)
End Sub
Protected Overrides Sub ExecuteCore()
Dim dialog As SaveFileDialog = New SaveFileDialog With {.Filter = "Rich Text Format Files (*.rtf)|*.rtf|All Files (*.*)|*.*", .FileName = "SavedDocument.rtf", .RestoreDirectory = True, .CheckFileExists = False, .CheckPathExists = True, .OverwritePrompt = True, .DereferenceLinks = True, .ValidateNames = True, .AddExtension = False, .FilterIndex = 1}
dialog.InitialDirectory = "C:\Temp"
If dialog.ShowDialog() = DialogResult.OK Then
CType(Me.Control, RichEditControl).SaveDocument(dialog.FileName, DocumentFormat.Rtf)
End If
'base.ExecuteCore();
End Sub
End Class
You can also use the RichEditControl.SaveDocumentAs API method to achieve the same result.
Inheritance
ObjectCommandDevExpress.Utils.Commands.ControlCommand<
IRichEditControl,
RichEditCommandId, DevExpress.XtraRichEdit.Localization.XtraRichEditStringId>
DevExpress.XtraRichEdit.Commands.RichEditCommandBase<DevExpress.XtraRichEdit.Localization.XtraRichEditStringId>
See Also