Workaround: create a custom input behavior class and manually handle the navigation when holding the Shift key
public partial class SpreadsheetForm : Telerik.WinControls.UI.RadForm
{
public SpreadsheetForm()
{
InitializeComponent();
FieldInfo behaviorFi = typeof(RadSpreadsheetElement).GetField("inputHandler", BindingFlags.Instance | BindingFlags.NonPublic);
behaviorFi.SetValue(this.radSpreadsheet1.SpreadsheetElement, new CustomSpreadsheetInputBehavior(this.radSpreadsheet1.SpreadsheetElement));
}
}
public class CustomSpreadsheetInputBehavior : SpreadsheetInputBehavior
{
public CustomSpreadsheetInputBehavior(RadSpreadsheetElement element)
: base(element) { }
public override void ProcessKeyDown(KeyEventArgs e)
{
base.ProcessKeyDown(e);
if (e.Shift)
{
switch (e.KeyCode)
{
case Keys.Left:
this.Spreadsheet.ActiveWorksheetEditor.Commands.UpdateActiveSelectionRangeCommand.Execute(MovementType.MoveToPreviousColumn);
break;
case Keys.Up:
this.Spreadsheet.ActiveWorksheetEditor.Commands.UpdateActiveSelectionRangeCommand.Execute(MovementType.MoveToPreviousRow);
break;
case Keys.Right:
this.Spreadsheet.ActiveWorksheetEditor.Commands.UpdateActiveSelectionRangeCommand.Execute(MovementType.MoveToNextColumn);
break;
case Keys.Down:
this.Spreadsheet.ActiveWorksheetEditor.Commands.UpdateActiveSelectionRangeCommand.Execute(MovementType.MoveToNextRow);
break;
}
}
}
}
The control can be resized in the designer. The resize operation starts with a slight delay and it is necessary to wait for this initial delay. From then on the control can be freely resized. The attached gif file illustrates this. Workaround: 1. Set the size using the property grid 2. Add a panel and dock the control to fill the panel, then resize the panel
Ideally we should expose the events in the RadPrintDocument object.
Workaround handling the PrintPreview method:
private void button1_Click(object sender, EventArgs e)
{
RadPrintDocument printDocument = new RadPrintDocument();
IPrintable printManager = typeof(RadSpreadsheetElement).GetProperty("PrintManager", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this.radSpreadsheet1.SpreadsheetElement) as IPrintable;
printDocument.AssociatedObject = printManager;
printDocument.BeginPrint += PrintDocument_BeginPrint;
printDocument.PrintPage += PrintDocument_PrintPage;
printDocument.EndPrint += PrintDocument_EndPrint;
printDocument.QueryPageSettings += PrintDocument_QueryPageSettings;
SpreadsheetPrintPreviewDialog printPreviewDialog = new SpreadsheetPrintPreviewDialog(printDocument);
printPreviewDialog.ThemeName = this.radSpreadsheet1.ThemeName;
printPreviewDialog.ShowDialog();
}
private void PrintDocument_QueryPageSettings(object sender, System.Drawing.Printing.QueryPageSettingsEventArgs e)
{
}
private void PrintDocument_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
}
private void PrintDocument_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
}
private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
}
How to reproduce: check the attached project and the remaining memory after disposing the forms.