IOleCommandTarget
C# Definition:
//IMPORTANT: The order of the methods is critical here. You
//perform early binding in most cases, so the order of the methods
//here MUST match the order of their vtable layout (which is determined
//by their layout in IDL). The interop calls key off the vtable
//ordering, not the symbolic names. Therefore, if you switched these
//method declarations and tried to call the Exec method on an
//IOleCommandTarget interface from your application, it would
//translate into a call to the QueryStatus method instead.
void QueryStatus(
ref Guid pguidCmdGroup,
UInt32 cCmds,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] OLECMD[] prgCmds,
ref OLECMDTEXT CmdText);
void Exec(
ref Guid pguidCmdGroup,
uint nCmdId,
uint nCmdExecOpt,
ref object pvaIn,
ref object pvaOut);
VB Definition:
<ComImport> _
<Guid("TODO")> _
'TODO: Insert <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _ if this doesn't derive from IDispatch
Interface IOleCommandTarget
TODO
End Interface
C# Definition:
[StructLayout(LayoutKind.Sequential)]
public struct OLECMD
{
//public UInt32 cmdID;
//public UInt64 cmdf;
public uint cmdID;
public uint cmdf; // NB: See above note (*)
}
[StructLayout(LayoutKind.Sequential)]
public struct OLECMDTEXT
{
public UInt32 cmdtextf;
public UInt32 cwActual;
public UInt32 cwBuf;
public char rgwz;
}
[ComImport, Guid("b722bccb-4e68-101b-a2bc-00aa00404770"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOleCommandTarget
{
//IMPORTANT: The order of the methods is critical here. You
//perform early binding in most cases, so the order of the methods
//here MUST match the order of their vtable layout (which is determined
//by their layout in IDL). The interop calls key off the vtable
//ordering, not the symbolic names. Therefore, if you switched these
//method declarations and tried to call the Exec method on an
//IOleCommandTarget interface from your application, it would
//translate into a call to the QueryStatus method instead.
[PreserveSig()]
int QueryStatus([In, MarshalAs(UnmanagedType.Struct)] ref Guid pguidCmdGroup, [MarshalAs(UnmanagedType.U4)] int cCmds, [In, Out]IntPtr prgCmds, [In, Out] IntPtr pCmdText);
[PreserveSig()]
int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdExecOpt, object[] pvaIn, [In, Out, MarshalAs(UnmanagedType.LPArray)] object[] pvaOut);
}
C# Definition:
//This attribute demands that all classes derived from the parent class have the specified permission.
[SecurityPermission(SecurityAction.LinkDemand),
SecurityPermission(SecurityAction.InheritanceDemand)]
/// <summary>
/// This class' methods wrap the IOLE commands.
/// </summary>
/// <purpose>
/// The class makes the calls to functions that handle going from
/// managed code to native code. The class shows the implementation necessary
/// for using IOLE Commands.
/// </purpose>
public class NativeCommands
{
private FormControl _infoPathControl;
protected const int QUERYFAILED = -1;
private string lastCommandExecuted;
/// <summary>
/// returns the last command that was executed.
/// </summary>
public string LastCommandExecuted
{
get
{
return lastCommandExecuted;
}
}
/// <summary>
/// InfoPath Form Control object
/// </summary>
public FormControl InfoPathControl
{
get
{
return _infoPathControl;
}
set
{
_infoPathControl = value;
}
}
#region Structures
/// <summary>
/// Struture passed as prgCmds parameter in the QueryStatus method
/// This structure holds the command to be queried and the result of the query
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct OLECMD
{
/// <summary>
/// Command to be queried
/// </summary>
private uint cmdID;
/// <summary>
/// Result of the query
/// </summary>
private uint cmdf;
/// <summary>
/// Gets or sets the command to be queried.
/// </summary>
public uint CmdId
{
get
{
return cmdID;
}
set
{
cmdID = value;
}
}
public uint CmdF
{
get
{
return cmdf;
}
set
{
cmdf = value;
}
}
}
#endregion
#region Interfaces
//import the IOLECommandTarget interface to perform IOLE commands
//IOLECommandTarget is registered in the registry
[
ComImport,
Guid("B722BCCB-4E68-101B-A2BC-00AA00404770"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)
]
private interface IOleCommandTarget
{
/// <summary>
/// Checks to see if a given command can be executed
/// </summary>
/// <param name="pguidCmdGroup">Unique identifier of the command group, NULL to specify the standard group</param>
/// <param name="cCmds">The number of commands in the prgCmds array</param>
/// <param name="prgCmds">Array of OLECMD structures that indicate the commands status information is required</param>
/// <param name="pCmdText">Pointer to name or status of command, NULL indicates this is not necessary</param>
void QueryStatus(ref Guid pguidCmdGroup, uint cCmds, [MarshalAs(UnmanagedType.LPArray), In, Out] OLECMD[] prgCmds, IntPtr pCmdText);
/// <summary>
/// Executes a specified command
/// </summary>
/// <param name="pguidCmdGroup">Command group</param>
/// <param name="nCmdID">Identifier of command to execute</param>
/// <param name="nCmdExecOpt">Options for executing the command</param>
/// <param name="pvaIn">Input arguments</param>
/// <param name="pvaOut">Command output</param>
void Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdExecOpt, ref object pvaIn, ref object pvaOut);
}
#endregion
#region Enums
/// <summary>
/// Designates the type of support provided by an object for the specified command
/// </summary>
[FlagsAttribute]
public enum OleCmdf
{
/// <summary>
/// The command is supported by this object
/// </summary>
Supported = 1,
/// <summary>
/// The command is available and enabled
/// </summary>
Enabled = 2,
/// <summary>
/// The command is an on-off toggle and is currently on
/// </summary>
Latched = 4,
/// <summary>
/// Reserved for future use
/// </summary>
Ninched = 8
}
#endregion
#region Query Status
/// <summary>
/// Queries whether or not a command can be executed
/// </summary>
/// <param name="commandID">ID number of the command to query</param>
/// <returns>True if command can be performed and false if it cannot</returns>
public bool QueryCommandStatus(FormControlCommandIds.CommandIds commandId)
{
//Create an array for the OLECMD
OLECMD[] commands = new OLECMD[1];
commands[0].CmdId = Convert.ToUInt16(commandId,CultureInfo.CurrentCulture);
commands[0].CmdF = 0;
QueryCommandStatus(commands);
//if command is supported and enabled command can be executed
return (((commands[0].CmdF & (uint)OleCmdf.Supported) != 0) && ((commands[0].CmdF & (uint)OleCmdf.Enabled) != 0));
}
/// <summary>
/// Queries whether or not a command can be executed
/// </summary>
/// <param name="commands">Group of commands to be queried</param>
public void QueryCommandStatus(OLECMD[] commands)
{
//Get a IOLECommandTarget object form the ActiveX control
IOleCommandTarget commandTarget = _infoPathControl.GetOcx() as IOleCommandTarget;
try
{
commandTarget.QueryStatus(ref FormControlCommandIds.CommandGroup, Convert.ToUInt16(commands.Length), commands, IntPtr.Zero);
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to query commands", ex);
}
}
#endregion
#region Command Execution
/// <summary>
/// Checks whether or not the specified command is on or off
/// </summary>
/// <param name="commandID">Command to be executed</param>
/// <returns>True if command is activated or False if not</returns>
public bool IsCommandOn(FormControlCommandIds.CommandIds commandId)
{
//Create an array for the OLECMD
OLECMD[] commands = new OLECMD[1];
commands[0].CmdId = Convert.ToUInt16(commandId,CultureInfo.CurrentCulture);
commands[0].CmdF = 0;
QueryCommandStatus(commands);
return (((commands[0].CmdF & (uint)OleCmdf.Supported) != 0) && ((commands[0].CmdF & (uint)OleCmdf.Enabled) != 0) &&
((commands[0].CmdF & (uint)OleCmdf.Latched) != 0));
}
/// <summary>
/// Executes a given command
/// </summary>
/// <param name="CommandID">Command to be executed</param>
/// <returns>Results of executing a command</returns>
public object ExecuteCommand(FormControlCommandIds.CommandIds commandId)
{
return ExecuteCommand(commandId, null);
}
/// <summary>
/// Executes a given command with specified parameters
/// </summary>
/// <param name="CommandID">Command to be executed</param>
/// <param name="vaIn">Input Arguments</param>
/// <returns>Results of executing the command</returns>
public object ExecuteCommand(FormControlCommandIds.CommandIds commandId, object vaIn)
{
//remember the last command executed
lastCommandExecuted = commandId.ToString();
//indicates to Exec call to do the default option
const int EXECUTE_OPTION_DO_DEFAULT = 0;
//holds the return result
object vaOut = null;
//make sure the command can be executed first
if (!QueryCommandStatus(commandId))
{
return QUERYFAILED;
}
// Get the commandTarget from the control
IOleCommandTarget commandTarget = _infoPathControl.GetOcx() as IOleCommandTarget;
try
{
commandTarget.Exec(ref FormControlCommandIds.CommandGroup, Convert.ToUInt16(commandId,CultureInfo.CurrentCulture),
EXECUTE_OPTION_DO_DEFAULT, ref vaIn, ref vaOut);
return vaOut;
}
catch (Exception ex)
{
throw new HostedException("An error occurred while executing command " + commandId.ToString(), ex);
}
}
#endregion
}
C# Definition:
//This attribute demands that all classes derived from the parent class have the specified permission.
[SecurityPermission(SecurityAction.LinkDemand),
SecurityPermission(SecurityAction.InheritanceDemand)]
/// <summary>
/// The class makes calls to perform commands against the form control
/// </summary>
/// <purpose>
/// Class is designed to be a central point for executing commands against a form control
/// In order to use this class a user must provide an instance of a form control.
/// </purpose>
public class FormController : NativeCommands
{
#region Constructors
/// <summary>
/// Commands
/// </summary>
public FormController(FormControl parentInfoPathInstance)
{
if (parentInfoPathInstance != null)
{
InfoPathControl = parentInfoPathInstance;
}
else
{
InfoPathControl = new FormControl();
}
}
#endregion
#region Enums and Structs
/// <summary>
/// Enumeration of the Interaction type This will allow different
/// code paths to be triggered for an action
/// </summary>
public enum InteractionType
{
/// <summary>
/// Uses the InfoPath OM
/// </summary>
OM = 0,
/// <summary>
/// Uses the supported InfoPath IOLECommand
/// </summary>
IOLE = 1,
}
/// <summary>
/// Defines the directions a table can have
/// </summary>
public struct TableDirectionValues
{
public const string NODIRECTION = "none";
public const string RIGHTTOLEFT = "RTL";
public const string LEFTTORIGHT = "LTR";
}
/// <summary>
/// Defines the horizontal alignment values for a table
/// </summary>
public struct TableHorizontalAlignmentValues
{
public const string LEFT = "left";
public const string CENTER = "center";
public const string RIGHT = "right";
}
/// <summary>
/// Defines the vertical alignment values for a table
/// </summary>
public struct TableVerticalAlignmentValues
{
public const string TOP = "top";
public const string MIDDLE = "middle";
public const string BOTTOM = "bottom";
}
/// <summary>
/// Defines the picture alignment values for a table
/// </summary>
public struct PictureAlignmentValues
{
public const string LEFT = "Left";
public const string RIGHT = "Right";
public const string INLINE = "inline";
}
#endregion
/// <summary>
/// Makes sure the command was executed properly
/// </summary>
/// <param name="commandResult">The result from executing the command</param>
/// <returns>The result from executing the command</returns>
private object ChkResult(object commandResult)
{
if ((commandResult !=null) && (commandResult.GetType().Equals(typeof(int))))
{
int result = (int)commandResult;
if (result == QUERYFAILED)
{
throw new NonApplicableCommandException("The command could not be executed at this time because it is not applicable. Command: " +
LastCommandExecuted);
}
}
return commandResult;
}
/// <summary>
/// Makes sure the command was executed properly
/// </summary>
/// <param name="commandResult">The result from executing the command</param>
/// <param name="expectedReturnType">The type of object the command was expected to return</param>
/// <returns>The result from executing the command</returns>
private object ChkResult(object commandResult, Type expectedReturnType)
{
commandResult = ChkResult(commandResult);
if ((commandResult!=null) && (!commandResult.GetType().Equals(expectedReturnType)))
{
throw new HostedException("Return type was not as expected. Expected type " + expectedReturnType.ToString() +
" but received " + commandResult.GetType().ToString() + "\nCommand: " + LastCommandExecuted);
}
return commandResult;
}
/// <summary>
/// Enters text into a field
/// </summary>
/// <param name="xPath">Field for data</param>
/// <param name="data">Data to put in the field</param>
public void EnterData(string xPath, string data)
{
if (string.IsNullOrEmpty(xPath))
{
throw new InvalidDataException("Parameter 'xPath' must have a value");
}
if (string.IsNullOrEmpty(data))
{
throw new InvalidDataException("Parameter 'data' must have a value");
}
if (IsFormLoaded)
{
XPathNavigator field =
InfoPathControl.XmlForm.MainDataSource.CreateNavigator().SelectSingleNode(xPath, InfoPathControl.XmlForm.NamespaceManager);
field.SetValue(data);
}
else
{
throw new HostedException("No form is currently loaded");
}
}
#region Load Methods
/// <summary>
/// Uses a File Open Dialog to get the path and name of an InfoPath xml, xsn or xsf to load
/// </summary>
public void Open()
{
OpenFileDialog openDialog = new OpenFileDialog();
//set initial directory the my documents folder
openDialog.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
openDialog.Filter = "All InfoPath Forms |*.xml;*.xsn|Forms (*.xml)|*.xml,*.xsn|InfoPath Form Templates (*.xsn)|*.xsn|Manifest Files (*.xsf)|*.xsf|All files (*.*)|*.*";
//set the default filter = (InfoPath) Forms
openDialog.FilterIndex = 1;
//when the user clicks OK, call the Load method of the InfoPath Editor Control object
if (openDialog.ShowDialog() == DialogResult.OK)
{
if (openDialog.FileName.EndsWith(".xsn",StringComparison.OrdinalIgnoreCase) || openDialog.FileName.EndsWith(".xsf",StringComparison.OrdinalIgnoreCase))
{
NewFromFormTemplate(openDialog.FileName);
}
else if (openDialog.FileName.EndsWith(".xml",StringComparison.OrdinalIgnoreCase))
{
Open(openDialog.FileName);
}
else
{
throw new InvalidFileException("Specified file was not a valid InfoPath File");
}
}
else
{
throw new HostedException("Operation was cancelled by the user");
}
}
/// <summary>
/// Loads a form given the full path and file name
/// </summary>
/// <param name="filePath">Full file path and name to an InfoPath xml file</param>
public void Open(string filePath)
{
if (!String.IsNullOrEmpty(filePath))
{
try
{
if (!File.Exists(filePath))
{
throw new InvalidFileException("The file " + filePath + " cannot be found");
}
InfoPathControl.Open(filePath);
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to open a file", ex);
}
}
else
{
throw new InvalidDataException("Parameter 'filePath' must have a value");
}
}
#region OpenThroughStream
/// <summary>
/// Uses a Form Open Dialog to load a form. Loads the instance .xml
/// into a stream first.
/// </summary>
public void OpenThroughStream()
{
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
openDialog.Filter = "Forms (*.xml)|*.xml|All files (*.*)|*.*";
openDialog.FilterIndex = 1;
if (openDialog.ShowDialog() == DialogResult.OK)
{
if (openDialog.FileName.EndsWith(".xml",StringComparison.OrdinalIgnoreCase))
{
OpenThroughStream(openDialog.FileName);
}
else
{
throw new HostedException("Invalid file type. Should be .xml");
}
}
else
{
throw new HostedException("Operation was cancelled by the user");
}
}
/// <summary>
/// Loads an xml from through stream given the full path and file name
/// </summary>
/// <param name="fileName">Full path and file name</param>
public void OpenThroughStream(string fileName)
{
if (!String.IsNullOrEmpty(fileName))
{
try
{
if (!File.Exists(fileName))
{
throw new InvalidFileException("The file " + fileName + " cannot be found");
}
XmlDocument tempXmlDoc = new XmlDocument();
tempXmlDoc.Load(fileName);
MemoryStream tempCoreStream = new MemoryStream();
tempXmlDoc.Save(tempCoreStream);
InfoPathControl.Open(tempCoreStream);
tempCoreStream.Close();
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to open a file", ex);
}
}
else
{
throw new InvalidDataException("Parameter 'fileName' must contain a value");
}
}
#endregion
C# Definition:
/// <summary>
/// Opens an InfoPath form template in the Editor
/// </summary>
/// <param name="filePath">Full path and file name of the .xsf or .xsn file</param>
public void NewFromFormTemplate(string filePath)
{
if (!String.IsNullOrEmpty(filePath))
{
try
{
if (!File.Exists(filePath))
{
throw new InvalidFileException("The file " + filePath + " cannot be found");
}
InfoPathControl.NewFromFormTemplate(filePath);
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to open a file", ex);
}
}
else
{
throw new InvalidDataException("Parameter 'filePath' must contain a value");
}
}
/// <summary>
/// Uses Form Open Dialogs to get an instance .xml and a solution .xsn
/// to load. The .xml is loaded into a stream first.
/// </summary>
public void NewFromFormTemplateWithData()
{
string xmlFile = string.Empty;
string xsnFile = string.Empty;
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
//get instance xml file
openDialog.Title = "Select instance .xml file.";
openDialog.Filter = "Forms (*.xml)|*.xml|All files (*.*)|*.*";
if (openDialog.ShowDialog() == DialogResult.OK)
{
if (openDialog.FileName.EndsWith(".xml",StringComparison.OrdinalIgnoreCase))
{
xmlFile = openDialog.FileName;
}
else
{
throw new InvalidFileException("Selected file " + openDialog.FileName + " was not an XML file");
}
C# Definition:
//get form template xsn
openDialog.Title = "Select form tempalte .xsn.";
openDialog.Filter = "Form Templates (*.xsn)|*.xsn|All files (*.*)|*.*";
if (openDialog.ShowDialog() == DialogResult.OK)
{
if (openDialog.FileName.EndsWith(".xsn",StringComparison.OrdinalIgnoreCase))
{
xsnFile = openDialog.FileName;
}
else
{
throw new HostedException("Selected file " + openDialog.FileName + " was not an XSN file");
}
}
}
//Load files provided user did not cancel any option
if (!(string.IsNullOrEmpty(xmlFile)) && !(string.IsNullOrEmpty(xsnFile)))
{
NewFromFormTemplateWithData(xmlFile, xsnFile);
}
else
{
throw new HostedException("Operation was cancelled by user");
}
}
/// <summary>
/// Load an XSN using data specified by in an xml file
/// </summary>
/// <param name="xmlFile">Data to open xsn with</param>
/// <param name="xsnFile">XSN file to open</param>
public void NewFromFormTemplateWithData(string xmlFile, string xsnFile)
{
if (String.IsNullOrEmpty(xmlFile))
{
throw new InvalidDataException("Parameter 'xmlFile' must have a value");
}
if (String.IsNullOrEmpty(xsnFile))
{
throw new InvalidDataException("Parameter 'xsnFile' must have a value");
}
if (!File.Exists(xmlFile))
{
throw new InvalidFileException("The file " + xmlFile + " cannot be found");
}
if (!File.Exists(xsnFile))
{
throw new InvalidFileException("The file " + xsnFile + " cannot be found");
}
try
{
XmlDocument tempXmlDoc = new XmlDocument();
tempXmlDoc.Load(xmlFile);
MemoryStream tempCoreStream = new MemoryStream();
tempXmlDoc.Save(tempCoreStream);
InfoPathControl.NewFromFormTemplate(xsnFile, tempCoreStream, XmlFormOpenMode.Default);
tempCoreStream.Close();
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to open a file", ex);
}
}
#endregion
#region Save
/// <summary>
/// Saves the currently opened document
/// </summary>
/// <param name="interactionType">OM or IOLE</param>
public void Save(InteractionType interactionType)
{
switch (interactionType)
{
case InteractionType.OM:
if (IsFormLoaded)
{
try
{
InfoPathControl.XmlForm.Save();
}
catch(Exception ex)
{
throw new HostedException("An error occurred while attempting to save this form", ex);
}
}
break;
case InteractionType.IOLE:
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Save));
break;
default:
throw new HostedException("Invalid InteractionType.");
}
}
/// <summary>
/// Opens the Save As dialog
/// </summary>
/// <param name="interactionType">IOLE or OM</param>
public void SaveAs(InteractionType interactionType)
{
switch (interactionType)
{
case InteractionType.OM:
if (IsFormLoaded)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
saveFileDialog.Filter = "Forms (*.xml)|*.xml|All files (*.*)|*.*";
saveFileDialog.FilterIndex = 1;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
SaveAs(saveFileDialog.FileName);
}
}
break;
case InteractionType.IOLE:
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SaveAs));
break;
default:
throw new HostedException("Invalid InteractionType.");
}
}
/// <summary>
/// Does a save as using the object model given the save location
/// </summary>
/// <param name="savePath">Location to save the file</param>
public void SaveAs(string savePath)
{
if (String.IsNullOrEmpty(savePath))
{
throw new InvalidDataException("Parameter 'savePath' must have a value");
}
try
{
if (savePath.EndsWith(".xml",StringComparison.OrdinalIgnoreCase))
{
InfoPathControl.XmlForm.SaveAs(savePath);
}
else
{
InfoPathControl.XmlForm.SaveAs(savePath + ".xml");
}
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to save this form", ex);
}
}
#endregion
#region Print
/// <summary>
/// Prints the current view. Print Dialog does not appear and therefore a document
/// will be printed.with the default printer settings
/// </summary>
public void Print()
{
if (IsFormLoaded)
{
try
{
InfoPathControl.XmlForm.Print();
//NOTE: XmlForm.Print(true) will NOT show the print dialog.
//The print dialog is not supported in hosting scenarios
}
catch(Exception ex)
{
throw new HostedException("An error occurred while attempting to print this form", ex);
}
}
}
#endregion
#region Close
/// <summary>
/// Closes an XMLForm in the form control
/// </summary>
/// <param name="interactionType">Execute through IOLE or OM</param>
public void Close(InteractionType interactionType)
{
// Check to make sure there is a document loaded before
// trying to close it
if (IsFormLoaded)
{
switch (interactionType)
{
case InteractionType.OM:
try
{
InfoPathControl.XmlForm.Close();
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to close this form", ex);
}
break;
case InteractionType.IOLE:
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Close));
break;
default:
throw new HostedException("Invalid InteractionType.");
}
}
}
#endregion
#region Font Formatting
#region Bold
/// <summary>
/// Sets/Unsets the formatting of the selected text to bold
/// </summary>
public void ToggleFontFormattingBold()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingBold));
}
#endregion
#region Italic
/// <summary>
/// Sets/Unsets the formatting of the selected text to Italics
/// </summary>
public void ToggleFontFormattingItalic()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingItalic));
}
#endregion
#region Underline
/// <summary>
/// Sets/Unsets the formatting of the selected text to be Underlined
/// </summary>
public void ToggleFontFormattingUnderline()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingUnderline));
}
#endregion
#region Strikethrough
/// <summary>
/// Sets/Unsets the formatting of the selected text to be strikethrough
/// </summary>
public void ToggleFontFormattingStrikethrough()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingStrikethrough));
}
#endregion
#region Superscript
/// <summary>
/// Sets the formatting of the selected text to be superscipt
/// </summary>
public void ToggleFontFormattingSuperscript()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingSuperscript));
}
#endregion
#region Subscript
/// <summary>
/// Sets/Unsets the formatting of the selected text to subscript
/// </summary>
public void ToggleFontFormattingSubscript()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingSubscript));
}
#endregion
#region IncreaseFontSizeBy2
/// <summary>
/// Increases the font size of the selected text by 2
/// </summary>
public void IncreaseFontSizeBy2()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.IncreaseFontSizeBy2));
}
#endregion
#region DecreaseFontSizeBy2
/// <summary>
/// Decreases the font size of the selected text by 2
/// </summary>
public void DecreaseFontSizeBy2()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.DecreaseFontSizeBy2));
}
#endregion
#region ClearFontFormatting
/// <summary>
/// Clears font formatting of the selected text
/// </summary>
public void ClearFontFormatting()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ClearFontFormatting));
}
#endregion
#region Headings
/// <summary>
/// Sets the font formatting of the selected text to InfoPath's setting for heading 1
/// </summary>
public void SetFontFormattingHeading1()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingHeading1));
}
/// <summary>
///Sets the font formatting of the selected text to InfoPath's setting for heading 2
/// </summary>
public void SetFontFormattingHeading2()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingHeading2));
}
/// <summary>
/// Sets the font formatting of the selected text to InfoPath's setting for heading 3
/// </summary>
public void SetFontFormattingHeading3()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingHeading3));
}
/// <summary>
/// Sets the font formatting of the selected text to InfoPath's setting for heading 4
/// </summary>
public void SetFontFormattingHeading4()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingHeading4));
}
/// <summary>
/// Sets the font formatting of the selected text to InfoPath's setting for heading 5
/// </summary>
public void SetFontFormattingHeading5()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingHeading5));
}
/// <summary>
/// Sets the font formatting of the selected text to InfoPath's setting for heading 6
/// </summary>
public void SetFontFormattingHeading6()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingHeading6));
}
/// <summary>
/// Sets the font formatting of the selected text to InfoPath's setting for normal
/// </summary>
public void SetFontFormattingNormal()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFontFormattingNormal));
}
#endregion
#region Font
/// <summary>
/// Gets the number of fonts in InfoPath's font list
/// </summary>
///<returns>numbers of fonts available</returns>
public int FontsAvailableCount
{
get
{
return Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetFontsAvailableCount), typeof(int)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Gets the name of a font from InfoPath's font combobox at a user specified index
/// </summary>
/// <param name="index">index of the font</param>
/// <returns>The name of the font, empty if index is invalid</returns>
public string GetFontAt(int index)
{
if (index >= 0 && index < FontsAvailableCount)
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetFontAvailableByIndex, index), typeof(string)),CultureInfo.CurrentCulture
);
}
else
{
throw new InvalidDataException("Index is not in a valid range");
}
}
C# Definition:
/// <summary>
/// Sets/Gets the font of the currenty selected text
/// </summary>
/// <returns>The name of the font of the selected text</returns>
public string SelectedTextFont
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedTextFont),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
if (!String.IsNullOrEmpty(value))
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedTextFont, value));
}
}
}
#endregion
#region FontSize
/// <summary>
/// Gets the number of font sizes in InfoPath's font size lists
/// </summary>
/// <returns>The number of font sizes available</returns>
public int FontSizesAvailableCount
{
get
{
return Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetFontSizesAvailableCount),typeof(int)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Gets the value of a font size from InfoPath's font sizes combobox at a user specified index
/// </summary>
/// <param name="index">Index of the requested font size</param>
/// <returns>The font size at the specified index</returns>
public string GetFontSizeAt(int index)
{
if (index >= 0 && index < FontSizesAvailableCount)
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetFontSizeAvailableByIndex, index), typeof(string)),CultureInfo.CurrentCulture
);
}
else
{
throw new InvalidDataException("Index is not in a valid range");
}
}
/// <summary>
/// Sets/Gets the font size of the currently selected text
/// </summary>
/// <returns>The name of the font size of the selected text</returns>
public string SelectedTextFontSize
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedTextFontSize), typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
if (!String.IsNullOrEmpty(value))
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedTextFontSize, value));
}
}
}
#endregion
#region Font Color
/// <summary>
/// Sets/Gets the font color of the selected text
/// </summary>
/// <returns>The current font color</returns>
public Color FontColor
{
get
{
try
{
return ColorTranslator.FromOle(Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedTextFontColor), typeof(int)), CultureInfo.CurrentCulture
));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to get the font color", ex);
}
}
set
{
UInt32 vaIn;
try
{
vaIn = Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(value));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to set the font color", ex);
}
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedTextFontColor, vaIn));
}
}
/// <summary>
/// Gets InfoPath's default font color
/// </summary>
/// <returns>The default font color</returns>
public Color DefaultFontColor
{
get
{
try
{
return ColorTranslator.FromOle(Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetDefaultFontColor), typeof(int)),CultureInfo.CurrentCulture
));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to get the default font color", ex);
}
}
}
#endregion
#region HighlightColor
/// <summary>
/// Sets/Gets the highlight color of the selected text
/// </summary>
/// <returns type="Color">The current highlight color</returns>
public Color HighlightColor
{
get
{
try
{
return ColorTranslator.FromOle(Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedTextHighlightColor), typeof(int)),CultureInfo.CurrentCulture
));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to get the highlight color", ex);
}
}
set
{
UInt32 vaIn;
try
{
vaIn = Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(value));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to set the highlight color", ex);
}
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedTextHighlightColor, vaIn));
}
}
/// <summary>
/// Gets InfoPath's default highlight color
/// </summary>
/// <returns type="Color">The default highlight color</returns>
public Color DefaultHighlightColor
{
get
{
try
{
return ColorTranslator.FromOle(Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetDefaultHighlightColor), typeof(int)),CultureInfo.CurrentCulture
));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to get the default highlight color", ex);
}
}
}
#endregion
#endregion
#region Paragraph settings
#region AlignLeft
/// <summary>
/// Aligns the selected paragraph to the left
/// </summary>
public void AlignTextLeft()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.AlignTextLeft));
}
#endregion
#region AlignCenter
/// <summary>
/// Aligns the selected paragraph to the center
/// </summary>
public void AlignTextCenter()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.AlignTextCenter));
}
#endregion
#region AlignRight
/// <summary>
/// Aligns the selected paragraph to the right
/// </summary>
public void AlignTextRight()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.AlignTextRight));
}
#endregion
#region AlignJustify
/// <summary>
/// Justifies the selected paragraph
/// </summary>
public void AlignTextJustify()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.AlignTextJustify));
}
#endregion
#region Increase Indent
/// <summary>
/// Increases indentation of the selected paragraph
/// </summary>
public void IncreaseIndent()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.IncreaseIndent));
}
#endregion
#region Decrease Indent
/// <summary>
/// Decreases indentation of the selected paragraph
/// </summary>
public void DecreaseIndent()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.DecreaseIndent));
}
#endregion
#region Single Line Spacing
/// <summary>
/// Sets the line spacing to 1.0
/// </summary>
public void SetSingleLineSpacing()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSingleLineSpacing));
}
#endregion
#region Double Line Spacing
/// <summary>
/// Sets the line spacing to 2.0
/// </summary>
public void SetDoubleLineSpacing()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetDoubleLineSpacing));
}
#endregion
#region 1.5 Line Spacing
/// <summary>
/// Sets the line spacing to 1.5
/// </summary>
public void Set15LineSpacing()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Set15LineSpacing));
}
#endregion
#region Background Color
/// <summary>
/// Gets the background color of the selected text
/// </summary>
/// <returns type="Color">the current background color</returns>
public Color BackgroundColor
{
get
{
try
{
return ColorTranslator.FromOle(Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedTextBackgroundColor)),CultureInfo.CurrentCulture
));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to get the background color", ex);
}
}
set
{
UInt32 vaIn;
try
{
vaIn = Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(value));
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to set the background color", ex);
}
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedTextBackgroundColor, vaIn));
}
}
#endregion
#endregion
#region Editing
#region Undo
/// <summary>
/// Un-does the last action
/// </summary>
public void Undo()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Undo));
}
#endregion
#region Redo
/// <summary>
/// Re-does the last action
/// </summary>
public void Redo()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Redo));
}
#endregion
#region Cut
/// <summary>
/// Cuts the selected text and copies it to the clipboard
/// </summary>
public void Cut()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Cut));
}
#endregion
#region Copy
/// <summary>
/// Copies the selected text to the clipboard
/// </summary>
public void Copy()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Copy));
}
#endregion
#region Paste
/// <summary>
/// Pastes the copied or cut text into the selected control
/// </summary>
public void Paste()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Paste));
}
#endregion
#region Select All
/// <summary>
/// Selects all of the text in a control
/// </summary>
public void SelectAll()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectAll));
}
#endregion
#region Format Painter
/// <summary>
/// Applies the current formatting to other text
/// </summary>
public void FormatPainter()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.FormatPainterCopyFormatting));
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.FormatPainterApplyFormatting));
}
/// <summary>
/// Applies the current formatting to other text with the brush remaining after each paste
/// </summary>
public void FormatPainterPersistent()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.FormatPainterCopyFormattingPersistent));
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.FormatPainterApplyFormattingPersistent));
}
#endregion
#region Find and Replace
/// <summary>
/// Sets/Gets whether or not the use wildcards option is turned on
/// </summary>
/// <returns>True if use wildcards is on, otherwise false</returns>
public bool FindReplaceOptionUseWildcardsOn
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SetFindReplaceOptionUseWildcards);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFindReplaceOptionUseWildcards, value));
}
}
/// <summary>
/// Sets/Gets whether or not the match case option is turned on
/// </summary>
/// <returns>True if match case is on, otherwise false</returns>
public bool FindReplaceOptionMatchCaseOn
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SetFindReplaceOptionMatchCase);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFindReplaceOptionMatchCase, value));
}
}
/// <summary>
/// Sets/Gets whether or not the use whole words only option is turned on
/// </summary>
/// <returns>True if whole words only is on, otherwise false</returns>
public bool FindReplaceOptionWholeWordsOnlyOn
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SetFindReplaceOptionWholeWordOnly);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFindReplaceOptionWholeWordOnly, value));
}
}
/// <summary>
/// Sets/Gets the search direction
/// </summary>
/// <returns>1 for up, o for down</returns>
public int FindReplaceOptionSearchDirection
{
get
{
return Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetFindReplaceOptionSearchDirection),typeof(int)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFindReplaceOptionSearchDirection, value));
}
}
/// <summary>
/// Gets the result of the find/replace action
/// </summary>
/// <returns>The result of the find operation</returns>
public int FindReplaceResult
{
get
{
return Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetFindReplaceState),typeof(int)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Sets/Gets the string being searched for
/// </summary>
/// <returns>The string being searched for</returns>
public string FindString
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetFindString),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetFindString, value));
}
}
/// <summary>
/// Sets/Gets the string replacing the search string
/// </summary>
/// <returns>The replacement string</returns>
public string ReplaceString
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetReplaceWithString),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetReplaceWithString, value));
}
}
/// <summary>
/// Finds the next instance of the search string in the document
/// </summary>
public void FindNext()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.FindReplaceFindNext));
}
/// <summary>
/// Replaces the currently selected search string instance
/// </summary>
/// <param name="ReplaceString">string to replace selected string</param>
public void Replace()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Replace));
}
/// <summary>
/// Replaces all matching instances of the find parameter
/// </summary>
/// <param name="ReplaceString">string to replace find string with</param>
public void ReplaceAll()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ReplaceAll));
}
#endregion
#endregion
#region Bulletts and Numbering
#region ClearBulletList
/// <summary>
/// Remove the bullets from the selected line(s)
/// </summary>
public void ClearBulletedList()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ClearBulletedList));
}
/// <summary>
/// Removes the numbered list from the selected line(s)
/// </summary>
public void ClearNumberedList()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ClearNumberedList));
}
#endregion
#region Insert Numbered and Bulleted List
/// <summary>
/// Inserts/Removes a numbered list for the current selection
/// </summary>
public void InsertNumberedList()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertNumberedList));
}
/// <summary>
/// Inserts/Removes a bulleted list for the current selection
/// </summary>
public void InsertBulletedList()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertBulletedList));
}
#endregion
#region Insert NumberList Decimal
/// <summary>
/// Inserts a numbered list using decimal numbers
/// </summary>
public void InsertNumberedListDecimal()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertNumberedListDecimal));
}
#endregion
#region InsertNumberedListRomanUppercase
/// <summary>
/// Inserts a numbered list using upper case roman numeral numbers
/// </summary>
public void InsertNumberedListRomanUppercase()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertNumberedListRomanUppercase));
}
#endregion
#region InsertNumberedListRomanLowercase
/// <summary>
/// Inserts a numbered list using lower case roman numeral numbers
/// </summary>
public void InsertNumberedListRomanLowercase()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertNumberedListRomanLowercase));
}
#endregion
#region InsertNumberedListAlphaUppercase
/// <summary>
/// Inserts an numbered list using uppercase alpha numeric numbers
/// </summary>
public void InsertNumberedListAlphaUppercase()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertNumberedListAlphaUppercase));
}
#endregion
#region InsertNumberedListAlphalowercase
/// <summary>
/// Inserts a numbered list using lowercase alpha numeric numbers
/// </summary>
public void InsertNumberedListAlphaLowercase()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertNumberedListAlphaLowercase));
}
#endregion
#region InsertBulletListSolidCircle
/// <summary>
/// Inserts a bulleted list with solid circles
/// </summary>
public void InsertBulletedListSolidCircle()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertBulletedList));
}
#endregion
#region InsertBulletListEmptyCircle
/// <summary>
/// Inserts a bulleted list with empty circles
/// </summary>
public void InsertBulletedListEmptyCircle()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertBulletedListEmptyCircle));
}
#endregion
#region InsertBulletListSolidSquare
/// <summary>
/// Inserts a bulleted list with solid squares
/// </summary>
public void InsertBulletedListSolidSquare()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertBulletedListSolidSquare));
}
#endregion
#endregion
#region Table Settings
#region Draw Table
/// <summary>
/// Activates/Deactivates draw pen which is used to create a table
/// </summary>
public void ToggleDrawTable()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.DrawTable));
}
#endregion
#region Erase Table
/// <summary>
/// Activates/Deactivates the eraser for erasing a table
/// </summary>
public void ToggleEraseTable()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.EraseTable));
}
#endregion
#region Insert and Delete Table
/// <summary>
/// Inserts a table into a supported control
/// </summary>
/// <param name="numRows">Number of rows the table should have</param>
/// <param name="numCols">Number of columns the table should have</param>
public void InsertTable(int rows, int columns)
{
if ((rows > 0) && (columns > 0))
{
object[] vaIn = new object[2];
vaIn[0] = rows;
vaIn[1] = columns;
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertTable, vaIn));
}
else
{
throw new InvalidDataException("The number of rows and columns must be greater than zero.");
}
}
/// <summary>
/// Deletes the selected table
/// </summary>
public void DeleteSelectedTable()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.DeleteSelectedTable));
}
#endregion
#region Select a Table
/// <summary>
/// Selects all of the current table
/// </summary>
public void SelectTable()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectTable));
}
#endregion
#region Insert columns and rows
/// <summary>
/// Inserts a column to the left of the currently focused column
/// </summary>
public void InsertColumnLeft()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertColumnLeft));
}
/// <summary>
/// Inserts a column to the right of the currently focused column
/// </summary>
public void InsertColumnRight()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertColumnRight));
}
/// <summary>
/// Inserts a row above the currently focused row
/// </summary>
public void InsertRowAbove()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertRowAbove));
}
/// <summary>
/// Inserts a row below the currently focused row
/// </summary>
public void InsertRowBelow()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertRowBelow));
}
#endregion
#region Delete columns and rows
/// <summary>
/// Deletes the selected columns
/// </summary>
public void DeleteSelectedColumns()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.DeleteSelectedColumns));
}
/// <summary>
/// Deletes the selected rows
/// </summary>
public void DeleteSelectedRows()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.DeleteSelectedRows));
}
#endregion
#region Select columns and rows
/// <summary>
/// Selects all of the current column
/// </summary>
public void SelectColumn()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectColumns));
}
/// <summary>
/// Selects the column before the column with the current focus
/// </summary>
public void SelectPreviousColumn()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectPreviousColumn));
}
/// <summary>
/// Selects the column after the column with the current focus
/// </summary>
public void SelectNextColumn()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectNextColumn));
}
/// <summary>
/// Selects all of the current row
/// </summary>
public void SelectRow()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectRows));
}
/// <summary>
/// Selects the row before the row with the current focus
/// </summary>
public void SelectPreviousRow()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectPreviousRow));
}
/// <summary>
/// Selects the row after the row with the current focus
/// </summary>
public void SelectNextRow()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectNextRow));
}
#endregion
#region Cells
/// <summary>
/// Selects the entire current cell
/// </summary>
public void SelectCell()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectCell));
}
/// <summary>
/// Combines two or more cells of a table
/// </summary>
public void MergeCells()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.MergeCells));
}
/// <summary>
/// Splits Cells into different proportions
/// </summary>
/// <param name="numCols">Number of columns to split into</param>
/// <param name="numRows">Number of rows to split cells into</param>
/// <param name="merge">Flag indicating cells should be merged/not merged before splitting</param>
public void SplitCells(decimal columns, decimal rows, bool merge)
{
if ((rows > 0) && (columns > 0))
{
object[] vaIn = new object[3];
vaIn[0] = columns.ToString(CultureInfo.CurrentCulture);
vaIn[1] = rows.ToString(CultureInfo.CurrentCulture);
vaIn[2] = merge;
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SplitCells, vaIn));
}
else
{
throw new InvalidDataException("The number of rows and columns must be greater than zero");
}
}
#region Cell Alignment
/// <summary>
/// Sets the alignment of the selected cell to be at the top
/// </summary>
public void SetSelectedCellAlignmentTop()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedCellAlignmentTop));
}
/// <summary>
/// Sets the alignment of the selected cell to be in the middle
/// </summary>
public void SetSelectedCellAlignmentMiddle()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedCellAlignmentMiddle));
}
/// <summary>
/// Sets the alignment of the selected cell to be at the bottom
/// </summary>
public void SetSelectedCellAlignmentBottom()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedCellAlignmentBottom));
}
/// <summary>
/// Gets the vertical alignment of the selected cell
/// </summary>
/// <return type="string">vertical alignment value (top,middle,bottom)</return>
public string SelectedCellVerticalAlignment
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedCellVerticalAlignment),typeof(string)),CultureInfo.CurrentCulture
);
}
}
#endregion
#region Table cell padding
/// <summary>
/// Sets the padding of selected cells
/// </summary>
/// <param name="padTop">padding to the top</param>
/// <param name="padRight">padding to the right</param>
/// <param name="padBottom">padding to the bottom</param>
/// <param name="padLeft">padding to the left</param>
public void SetSelectedCellPadding(string padTop, string padRight, string padBottom, string padLeft)
{
if (!String.IsNullOrEmpty(padTop) && !String.IsNullOrEmpty(padRight) && !String.IsNullOrEmpty(padBottom)
&& !String.IsNullOrEmpty(padLeft))
{
object[] vaIn = new object[4];
vaIn[0] = padTop;
vaIn[1] = padRight;
vaIn[2] = padBottom;
vaIn[3] = padLeft;
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedCellPadding, vaIn));
}
else
{
throw new InvalidDataException("One or more parameters is invalid");
}
}
/// <summary>
/// Gets the top padding of the selected cell
/// </summary>
/// <returns>The value for the top padding. Includes unit</returns>
public string SelectedCellTopPadding
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedCellTopPadding),typeof(string)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Gets the right padding of the selected cell
/// </summary>
/// <returns>The value for the right padding. Includes unit</returns>
public string SelectedCellRightPadding
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedCellRightPadding),typeof(string)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Gets the bottom padding of the selected cell
/// </summary>
/// <returns>The value for the bottom padding. Includes unit</returns>
public string SelectedCellBottomPadding
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedCellBottomPadding),typeof(string)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Gets the left padding of the selected cell
/// </summary>
/// <returns>The value for the left padding. Includes unit</returns>
public string SelectedCellLeftPadding
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedCellLeftPadding),typeof(string)),CultureInfo.CurrentCulture
);
}
}
#endregion
#endregion
#region Table Alignment
/// <summary>
/// Sets/Gets the alignment of the table
/// </summary>
/// <return>string (left, center, right)</return>
public string TableHorizontalAlignment
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetTableHorizontalAlignment),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetTableHorizontalAlignment, value));
}
}
#endregion
#region Table Direction
/// <summary>
/// Sets/Gets the direction of the table
/// </summary>
/// <return type=string>value of direction ("LTR" (Left To Right) or "RTL" (Right To Left))</return>
public string TableDirection
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetTableDirection),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetTableDirection, value));
}
}
#endregion
#region Row height and column width
/// <summary>
/// Sets/Gets the height of the selected row
/// </summary>
/// <returns>The height of the selected row with units</returns>
public string RowHeight
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedRowHeight),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedRowHeight, value));
}
}
/// <summary>
/// Sets/Gets the width of the selected column
/// </summary>
/// <returns>The width of the selected column with units</returns>
public string ColumnWidth
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSelectedColumnWidth),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSelectedColumnWidth, value));
}
}
#endregion
#region Row and column properties options
/// <summary>
/// Checks if there is a row below the currently selected row
/// </summary>
public bool IsNextRowExist
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SelectNextRow);
}
}
/// <summary>
/// Checks if there is a row above the currently selected row
/// </summary>
public bool IsPreviousRowExist
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SelectPreviousRow);
}
}
/// <summary>
/// Selects the next row in the table
/// </summary>
public void GotoNextRow()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectNextRow));
}
/// <summary>
/// Selects the previous row in the table
/// </summary>
public void GotoPreviousRow()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectPreviousRow));
}
/// <summary>
/// Checks if there is a column right of the currently selected column
/// </summary>
public bool IsNextColumnExist
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SelectNextColumn);
}
}
/// <summary>
/// Checks if there is a column left of the currently selected column
/// </summary>
public bool IsPreviousColumnExist
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SelectPreviousColumn);
}
}
/// <summary>
/// Selects the next column in the table
/// </summary>
public void GotoNextColumn()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectNextColumn));
}
/// <summary>
/// Selects the previous column in the table
/// </summary>
public void GotoPreviousColumn()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectPreviousColumn));
}
#endregion
#endregion
#region SpellChecker
/// <summary>
/// Finds and selects the next misspelled word
/// </summary>
/// <returns type="bool">true: if a misspelled word was found, false otherwise</returns>
public bool FindNextMisspelledWord()
{
return Convert.ToBoolean(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.FindNextMisspelledWord),typeof(bool)),CultureInfo.CurrentCulture
);
}
/// <summary>
/// Gets the number of suggested corrections
/// </summary>
/// <returns>The number of spelling suggestions</returns>
public int SpellingSuggestionsCount
{
get
{
return Convert.ToInt32(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSpellingSuggestionsCount),typeof(int)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Gets the i-th suggestion
/// </summary>
/// <param name="index">the suggestion index</param>
/// <returns>the suggestion string</returns>
public string GetSpellingSuggestion(int index)
{
if (index >= 0 && index < SpellingSuggestionsCount)
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSpellingSuggestion, index), typeof(string)),CultureInfo.CurrentCulture
);
}
else
{
throw new InvalidDataException("Index is out of expected range");
}
}
/// <summary>
/// Gets the selected misspelled word
/// </summary>
/// <returns>The currently selected misspelled word</returns>
public string CurrentMisspelledWord
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetCurrentMisspelledWord),typeof(string)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Ignores the selected misspelling
/// </summary>
/// <param name="misspelled">the misspelled word to ignore</param>
public void IgnoreMisspelledWord(string misspelled)
{
if (!String.IsNullOrEmpty(misspelled))
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.IgnoreMisspelledWord, misspelled));
}
else
{
throw new InvalidDataException("Misspelled word is either null or an empty string");
}
}
/// <summary>
/// Ignores all the occurences of the specified misspelled word
/// </summary>
/// <param name="misspelled">the word to ignore</param>
public void IgnoreAllOfMisspelledWord(string misspelled)
{
if (!String.IsNullOrEmpty(misspelled))
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.IgnoreAllOfMisspelledWord, misspelled));
}
else
{
throw new InvalidDataException("Misspelled word is either null or an empty string");
}
}
/// <summary>
/// Corrects the misspelled word
/// </summary>
/// <param name="misspelled">the misspelled word</param>
/// <param name="correct">correction of the misspelled word</param>
public void CorrectMisspelledWord(string misspelled, string correct)
{
if (!String.IsNullOrEmpty(misspelled) && !String.IsNullOrEmpty(correct))
{
object[] vaIn = { misspelled, correct };
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.CorrectMisspelledWord, vaIn));
}
else
{
throw new InvalidDataException("The misspelled word and the corrected word cannot be null or empty");
}
}
/// <summary>
/// Corrects all the occurences of this misspelled word
/// </summary>
/// <param name="misspelled">the word to correct</param>
/// <param name="correct">correction of the misspelled word</param>
public void CorrectAllOfMisspelledWord(string misspelled, string correct)
{
if (!String.IsNullOrEmpty(misspelled) && !String.IsNullOrEmpty(correct))
{
object[] vaIn = { misspelled, correct };
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.CorrectAllOfMisspelledWord, vaIn));
}
else
{
throw new InvalidDataException("The misspelled word and the corrected word cannot be null or empty");
}
}
/// <summary>
/// Adds the unrecognized\misspelled word to the custom dictionary
/// </summary>
/// <param name="misspelled">the new word to add to the dictionary</param>
public void AddWordToDictionary(string misspelled)
{
if (!String.IsNullOrEmpty(misspelled))
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.AddWordToDictionary, misspelled));
}
else
{
throw new InvalidDataException("The misspelled word is either null or an empty string");
}
}
/// <summary>
/// Deletes the selected misspelled word
/// </summary>
/// <param name="misspelled">the word to delete</param>
public void DeleteMisspelledWord(string misspelled)
{
if (!String.IsNullOrEmpty(misspelled))
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.DeleteMisspelledWord, misspelled));
}
else
{
throw new InvalidDataException("The misspelled word is either null or an empty string");
}
}
/// <summary>
/// Sets/Gets whether or not checking should be checked as users type
/// </summary>
/// <param name="checkAsYouType">Flag indicating whether to turn the option on or off</param>
public bool SpellingOptionCheckAsYouTypeOn
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SetSpellingOptionCheckAsYouType);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetSpellingOptionCheckAsYouType, value));
}
}
#endregion
#region Picture Formatting
/// <summary>
/// Positions the picture such that it falls inline with the text
/// </summary>
public void SetPictureInlineWithText()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetPictureInlineWithText));
}
/// <summary>
/// Positions the picture such that it falls to the left of any text
/// </summary>
public void SetPictureToLeftOfText()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetPictureToLeftOfText));
}
/// <summary>
/// Positions the picture such that it falls to the right of any text
/// </summary>
public void SetPictureToRightOfText()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetPictureToRightOfText));
}
// <summary>
/// Sets/Gets the height of the selected picture
/// </summary>
/// <returns>Height of the selected picture</returns>
public string PictureHeight
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetPictureHeight),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetPictureWidth, value));
}
}
/// <summary>
/// Sets/Gets the width of the selected picture
/// </summary>
/// <returns>Width of the selected picture</returns>
public string PictureWidth
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetPictureWidth),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetPictureWidth, value));
}
}
/// <summary>
/// Sets/Gets the alternative text of the selected picture
/// </summary>
/// <returns>Alternative text</returns>
public string PictureAlternativeText
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetPictureAlternativeText),typeof(string)),CultureInfo.CurrentCulture
);
}
set
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetPictureAlternativeText, value));
}
}
/// <summary>
/// Gets the alignment of the picture
/// </summary>
/// <returns>left,right or inline</returns>
public string PictureAlignment
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetPictureTextWrapping),typeof(string)),CultureInfo.CurrentCulture
);
}
}
#endregion
#region Insertion
#region Symbol
/// <summary>
/// Shows the Insert a Symbol Dialog
/// </summary>
public void ShowInsertSymbolDialog()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowInsertSymbolDialog));
}
#endregion
#region Image
/// <summary>
/// Inserts at image from the specified location
/// </summary>
/// <param name="path">path to the image</param>
public void InsertImage(string filePath)
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertImage, filePath));
}
/// <summary>
/// Inserts a Picture from a File dialog
/// </summary>
public void InsertPictureFromFile()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertPictureFromFile));
}
#endregion
#region Horizontal Line
/// <summary>
/// Inserts a horizontal line into a rich text control
/// </summary>
public void InsertHorizontalLine()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertHorizontalLine));
}
#endregion
#region Hyperlink
/// <summary>
/// Checks if a hyperlink is currently selected
/// </summary>
public bool IsHyperlinkSelected
{
get
{
return IsCommandOn(FormControlCommandIds.CommandIds.SelectHyperlink);
}
}
/// <summary>
/// Gets the URL affiliated with the hyperlink
/// </summary>
/// <returns></returns>
public string HyperlinkAddress
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetHyperlinkAddress),typeof(string)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Gets the text affiliated with the Hyperlink
/// </summary>
/// <returns></returns>
public string HyperlinkDisplayText
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetHyperlinkDisplayText),typeof(string)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Selects all of the current hyperlink
/// </summary>
public void SelectHyperlink()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SelectHyperlink));
}
/// <summary>
/// Inserts a hyperlink into a control
/// </summary>
/// <param name="link">Where the hyperlink leads to</param>
/// <param name="text">Text to display for the hyperlink</param>
public void InsertHyperlink(string link, string text)
{
if (!String.IsNullOrEmpty(link) && !String.IsNullOrEmpty(text))
{
object[] vaIn = { link, text };
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.InsertHyperlink, vaIn));
}
else
{
throw new InvalidDataException("Both the link and the text information cannot be null or blank");
}
}
/// <summary>
/// Removes a hyperlink
/// </summary>
public void RemoveHyperlink()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.RemoveHyperlink));
}
#endregion
#endregion
#region Errors
/// <summary>
/// Selects the first error on the current view
/// </summary>
public void GoToFirstErrorOnView()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GotoFirstErrorOnView));
}
/// <summary>
/// Selects the next error on the current view
/// </summary>
public void GoToNextErrorOnView()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GotoNextErrorOnView));
}
/// <summary>
/// Shows the message associated with the selected error
/// </summary>
public void ShowCurrentErrorMessage()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowCurrentErrorMessage));
}
#endregion
#region Work Offline
/// <summary>
/// Toggles WorkOffline On/Off
/// </summary>
public void WorkOffline()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.WorkOffline));
}
#endregion
#region Form Direction
/// <summary>
/// Checks if the current direction of the form is left to right
/// </summary>
public bool IsFormDirectionLeftToRight
{
get
{
return Convert.ToBoolean(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.IsFormDirectionLeftToRight),typeof(uint)),CultureInfo.CurrentCulture
);
}
}
/// <summary>
/// Checks if the current direction of the form is right to left
/// </summary>
public bool IsFormDirectionRightToLeft
{
get
{
return Convert.ToBoolean(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.IsFormDirectionRightToLeft),typeof(uint)),CultureInfo.CurrentCulture
);
}
}
#endregion
#region Text Direction
C# Definition:
/// Sets the direction of the text to be the default direction
/// </summary>
public void SetTextDirectionDefault()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetTextDirectionDefault));
}
/// <summary>
/// Sets the direction of the text to be left to right
/// </summary>
public void SetTextDirectionLeftToRight()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetTextDirectionLeftToRight));
}
/// <summary>
/// Sets the direction of the text to be right to left
/// </summary>
public void SetTextDirectionRightToLeft()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetTextDirectionRightToLeft));
}
#endregion
#region Submit
/// <summary>
/// Performs the submit action of the form
/// </summary>
public void Submit()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.Submit));
}
/// <summary>
/// Gets the text on the InfoPath Submit Button
/// </summary>
public string SubmitButtonCaption
{
get
{
return Convert.ToString(
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.GetSubmitButtonCaption),typeof(string)),CultureInfo.CurrentCulture
);
}
}
#endregion
#region Views
/// <summary>
/// Switches a view to the viewName
/// </summary>
/// <param name="viewName">name of the view</param>
public void SwitchView(string viewName)
{
if (string.IsNullOrEmpty(viewName))
{
throw new InvalidDataException("The view name entered is either null or empty.\nPlease use a valid view.");
}
if (IsFormLoaded)
{
try
{
InfoPathControl.XmlForm.ViewInfos.SwitchView(viewName);
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to switch view",ex);
}
}
}
/// <summary>
/// Gets an array of Views within the current form template
/// Will not return the hidded views
/// </summary>
/// <returns>String array of View names</returns>
public string[] GetViews()
{
string[] formTemplateViews = null;
if (IsFormLoaded)
{
try
{
// Check the view count, only proceed if there are views
if (InfoPathControl.XmlForm.ViewInfos.Count > 0)
{
// instantiate the array to hold the views to return
formTemplateViews = new string[InfoPathControl.XmlForm.ViewInfos.Count];
// Cycle through the views and populate the array
for (int viewCounter = 0; viewCounter < InfoPathControl.XmlForm.ViewInfos.Count; viewCounter++)
{
// If the HideName property is true, then we should NOT add this to the view collection
// this would indicate that the solution designer did not intend for this view to be
// available in the View menu.
if (!((ViewInfo)InfoPathControl.XmlForm.ViewInfos[viewCounter]).HideName)
{
string viewName = string.Empty;
viewName = InfoPathControl.XmlForm.ViewInfos[viewCounter].Name;
// Add the view name to the array
formTemplateViews[viewCounter] = viewName;
}
}
}
}
catch (Exception ex)
{
throw new HostedException("An error occurred while attempting to get the list of views", ex);
}
}
return formTemplateViews;
}
#endregion
#region Dialogs
#region Borders and Shading
/// <summary>
/// Shows the borders and shadings dialog
/// </summary>
public void ShowBordersShadingDialog()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowBordersShadingDialog));
}
#endregion
#region Digital Signatures
/// <summary>
/// Shows the Digital Signatures Dialog
/// </summary>
public void ShowDigitalSignaturesDialog()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowDigitalSignaturesDialog));
}
#endregion
#region SetLanguage
/// <summary>
/// Sets the language the editor uses using the set language dialog
/// </summary>
public void SetLanguage()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowSetLanguageDialog));
}
#endregion
#region Merge Forms
/// <summary>
/// Opens the Merge Forms dialog
/// </summary>
public void MergeForms()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowMergeFormDialog));
}
#endregion
#region Import Form Data
/// <summary>
/// Opens the Import form data dialog
/// </summary>
public void ImportFormData()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowImportFormDataDialog));
}
#endregion
#region Export
/// <summary>
/// Shows the export to web dialog
/// </summary>
public void ExportToWeb()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowExportToWebDialog));
}
/// <summary>
/// Shows the export to PDF or XPS dialog
/// </summary>
public void ExportToPDFXPS()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowExportToPDFXPSDialog));
}
/// <summary>
/// Shows the export to excel dialog
/// </summary>
public void ExportToExcel()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ShowExportToExcelDialog));
}
#endregion
#endregion
#region Asian Text Settings
/// <summary>
/// Sets whether spacing between asian text and numbers is on or off
/// </summary>
public void SetAutoSpaceBetweenAsianTextAndNumbers()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetAutoSpaceBetweenAsianTextAndNumbers));
}
/// <summary>
/// Set whether spacing between asian text and latin text is on or off
/// </summary>
public void SetAutoSpaceBetweenAsianAndLatinText()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.SetAutoSpaceBetweenAsianAndLatinText));
}
/// <summary>
/// Turns of all spacing adjustments for asian text
/// </summary>
public void ClearAutoSpace()
{
ChkResult(ExecuteCommand(FormControlCommandIds.CommandIds.ClearAutoSpace));
}
#endregion
#region Is Form Loaded
/// <summary>
/// Checks whether or not a document is loaded
/// </summary>
/// <returns>true if a document is loaded, otherwise false</returns>
public bool IsFormLoaded
{
get
{
if (InfoPathControl.XmlForm == null)
{
return false;
}
else
{
return true;
}
}
}
#endregion
}
Última actualización