实例介绍
【实例简介】
速度快
功能强大
支持公式计算,实现了excel的大部分常用功能
【实例截图】
【核心代码】
/***************************************************************************** * * ReoGrid - .NET Spreadsheet Control * * http://reogrid.net/ * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR * PURPOSE. * * ReoGrid and ReoGridEditor is released under MIT license. * * Copyright (c) 2012-2016 Jing <lujing at unvell.com> * Copyright (c) 2012-2016 unvell.com, all rights reserved. * ****************************************************************************/ using System; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Diagnostics; using unvell.Common; using InvestmentAnalysis.Properties; using unvell.ReoGrid.PropertyPages; using unvell.ReoGrid.Actions; using unvell.ReoGrid.CellTypes; using unvell.ReoGrid.Events; using unvell.ReoGrid.Data; using unvell.ReoGrid.WinForm; using unvell.ReoGrid.IO; using unvell.ReoGrid.DataFormat; using unvell.ReoGrid.Graphics; using unvell.ReoGrid.Rendering; using InvestmentAnalysis.LangRes; using unvell.ReoGrid.Print; using unvell.ReoGrid.Drawing; using unvell.ReoGrid.Drawing.Text; #if EX_SCRIPT using unvell.ReoScript.Editor; #endif // EX_SCRIPT using Point = System.Drawing.Point; namespace unvell.ReoGrid.Editor { /// <summary> /// Represents Editor of ReoGrid component. /// </summary> public partial class ReoGridEditor : Form { #region Constructor private NamedRangeManageForm nameManagerForm = null; /// <summary> /// Create instance of ReoGrid Editor. /// </summary> public ReoGridEditor() { InitializeComponent(); NewDocumentOnLoad = true; SuspendLayout(); isUIUpdating = true; SetupUILanguage(); fontToolStripComboBox.Text = Worksheet.DefaultStyle.FontName; fontSizeToolStripComboBox.Text = Worksheet.DefaultStyle.FontSize.ToString(); fontSizeToolStripComboBox.Items.AddRange(FontUIToolkit.FontSizeList.Select(f => (object)f).ToArray()); backColorPickerToolStripButton.CloseOnClick = true; borderColorPickToolStripItem.CloseOnClick = true; textColorPickToolStripItem.CloseOnClick = true; this.undoToolStripButton.Enabled = this.undoToolStripMenuItem.Enabled = this.redoToolStripButton.Enabled = this.redoToolStripMenuItem.Enabled = this.repeatLastActionToolStripMenuItem.Enabled = false; zoomToolStripDropDownButton.Text = "100%"; isUIUpdating = false; toolbarToolStripMenuItem.Click = (s, e) => fontToolStrip.Visible = toolStrip1.Visible = toolbarToolStripMenuItem.Checked; formulaBarToolStripMenuItem.CheckedChanged = (s, e) => formulaBar.Visible = formulaBarToolStripMenuItem.Checked; statusBarToolStripMenuItem.CheckedChanged = (s, e) => statusStrip1.Visible = statusBarToolStripMenuItem.Checked; sheetSwitcherToolStripMenuItem.CheckedChanged = (s, e) => this.grid.SetSettings(WorkbookSettings.View_ShowSheetTabControl, sheetSwitcherToolStripMenuItem.Checked); showHorizontaScrolllToolStripMenuItem.CheckedChanged = (s, e) => this.grid.SetSettings(WorkbookSettings.View_ShowHorScroll, showHorizontaScrolllToolStripMenuItem.Checked); showVerticalScrollbarToolStripMenuItem.CheckedChanged = (s, e) => this.grid.SetSettings(WorkbookSettings.View_ShowVerScroll, showVerticalScrollbarToolStripMenuItem.Checked); showGridLinesToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.View_ShowGridLine, showGridLinesToolStripMenuItem.Checked); showPageBreakToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.View_ShowPageBreaks, showPageBreakToolStripMenuItem.Checked); showFrozenLineToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.View_ShowFrozenLine, showFrozenLineToolStripMenuItem.Checked); showRowHeaderToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.View_ShowRowHeader, showRowHeaderToolStripMenuItem.Checked); showColumnHeaderToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.View_ShowColumnHeader, showColumnHeaderToolStripMenuItem.Checked); showRowOutlineToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.View_AllowShowRowOutlines, showRowOutlineToolStripMenuItem.Checked); showColumnOutlineToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.View_AllowShowColumnOutlines, showColumnOutlineToolStripMenuItem.Checked); sheetReadonlyToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.Edit_Readonly, sheetReadonlyToolStripMenuItem.Checked); resetAllPageBreaksToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.ResetAllPageBreaks(); resetAllPageBreaksToolStripMenuItem1.Click = (s, e) => this.CurrentWorksheet.ResetAllPageBreaks(); this.grid.WorksheetInserted = (ss, ee) => { var worksheet = ee.Worksheet; worksheet.SelectionRangeChanged = grid_SelectionRangeChanged; worksheet.SelectionModeChanged = worksheet_SelectionModeChanged; worksheet.SelectionStyleChanged = worksheet_SelectionModeChanged; worksheet.SelectionForwardDirectionChanged = worksheet_SelectionForwardDirectionChanged; worksheet.FocusPosStyleChanged = worksheet_SelectionModeChanged; worksheet.CellsFrozen = UpdateMenuAndToolStripsWhenAction; worksheet.Resetted = worksheet_Resetted; worksheet.SettingsChanged = worksheet_SettingsChanged; worksheet.Scaled = worksheet_GridScaled; }; this.grid.WorksheetRemoved = (ss, ee) => { var worksheet = ee.Worksheet; worksheet.SelectionRangeChanged -= grid_SelectionRangeChanged; worksheet.SelectionModeChanged -= worksheet_SelectionModeChanged; worksheet.SelectionStyleChanged -= worksheet_SelectionModeChanged; worksheet.SelectionForwardDirectionChanged -= worksheet_SelectionForwardDirectionChanged; worksheet.FocusPosStyleChanged -= worksheet_SelectionModeChanged; worksheet.CellsFrozen -= UpdateMenuAndToolStripsWhenAction; worksheet.Resetted -= worksheet_Resetted; worksheet.SettingsChanged -= worksheet_SettingsChanged; worksheet.Scaled -= worksheet_GridScaled; }; selModeNoneToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionMode = WorksheetSelectionMode.None; selModeCellToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionMode = WorksheetSelectionMode.Cell; selModeRangeToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionMode = WorksheetSelectionMode.Range; selModeRowToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionMode = WorksheetSelectionMode.Row; selModeColumnToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionMode = WorksheetSelectionMode.Column; selStyleNoneToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionStyle = WorksheetSelectionStyle.None; selStyleDefaultToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionStyle = WorksheetSelectionStyle.Default; selStyleFocusRectToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionStyle = WorksheetSelectionStyle.FocusRect; selDirRightToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionForwardDirection = SelectionForwardDirection.Right; selDirDownToolStripMenuItem.Click = (s, e) => this.grid.CurrentWorksheet.SelectionForwardDirection = SelectionForwardDirection.Down; zoomToolStripDropDownButton.TextChanged = zoomToolStripDropDownButton_TextChanged; undoToolStripButton.Click = Undo; redoToolStripButton.Click = Redo; undoToolStripMenuItem.Click = Undo; redoToolStripMenuItem.Click = Redo; mergeRangeToolStripMenuItem.Click = MergeSelectionRange; cellMergeToolStripButton.Click = MergeSelectionRange; unmergeRangeToolStripMenuItem.Click = UnmergeSelectionRange; unmergeRangeToolStripButton.Click = UnmergeSelectionRange; mergeCellsToolStripMenuItem.Click = MergeSelectionRange; unmergeCellsToolStripMenuItem.Click = UnmergeSelectionRange; formatCellsToolStripMenuItem.Click = formatCellToolStripMenuItem_Click; resizeToolStripMenuItem.Click = resizeToolStripMenuItem_Click; textWrapToolStripButton.Click = textWrapToolStripButton_Click; // todo this.grid.ActionPerformed = (s, e) => UpdateMenuAndToolStripsWhenAction(s, e); this.grid.Undid = (s, e) => UpdateMenuAndToolStripsWhenAction(s, e); this.grid.Redid = (s, e) => UpdateMenuAndToolStripsWhenAction(s, e); rowHeightToolStripMenuItem.Click = (s, e) => { var worksheet = this.CurrentWorksheet; using (SetWidthOrHeightDialog rowHeightForm = new SetWidthOrHeightDialog(RowOrColumn.Row)) { rowHeightForm.Value = worksheet.GetRowHeight(worksheet.SelectionRange.Row); if (rowHeightForm.ShowDialog() == DialogResult.OK) { this.grid.DoAction(new SetRowsHeightAction(worksheet.SelectionRange.Row, worksheet.SelectionRange.Rows, (ushort)rowHeightForm.Value)); } } }; columnWidthToolStripMenuItem.Click = (s, e) => { var worksheet = this.CurrentWorksheet; using (SetWidthOrHeightDialog colWidthForm = new SetWidthOrHeightDialog(RowOrColumn.Column)) { colWidthForm.Value = worksheet.GetColumnWidth(worksheet.SelectionRange.Col); if (colWidthForm.ShowDialog() == DialogResult.OK) { this.grid.DoAction(new SetColumnsWidthAction(worksheet.SelectionRange.Col, worksheet.SelectionRange.Cols, (ushort)colWidthForm.Value)); } } }; exportAsHtmlToolStripMenuItem.Click = (s, e) => { using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Filter = "HTML File(*.html;*.htm)|*.html;*.htm"; sfd.FileName = "Exported ReoGrid Worksheet"; if (sfd.ShowDialog() == DialogResult.OK) { using (FileStream fs = new FileStream(sfd.FileName, FileMode.Create)) { this.CurrentWorksheet.ExportAsHTML(fs); } Process.Start(sfd.FileName); } } }; editXMLToolStripMenuItem.Click = (s, e) => { string filepath = null; if (string.IsNullOrEmpty(this.CurrentFilePath)) { if (string.IsNullOrEmpty(currentTempFilePath)) { currentTempFilePath = Path.Combine(Path.GetTempPath(), Path.GetFileNameWithoutExtension(Path.GetTempFileName()) ".txt"); } filepath = currentTempFilePath; } else if (!this.CurrentFilePath.EndsWith(".rgf") && !this.CurrentFilePath.EndsWith(".xml")) { MessageBox.Show(LangResource.Msg_Only_RGF_Edit_XML); return; } else { if (MessageBox.Show(LangResource.Msg_Save_File_Immediately, "Edit XML", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Cancel) { return; } filepath = this.CurrentFilePath; } using (var fs = new FileStream(filepath, FileMode.Create, FileAccess.Write)) { this.CurrentWorksheet.Save(fs); } Process p = Process.Start("notepad.exe", filepath); p.WaitForExit(); if (p.ExitCode == 0) { this.CurrentWorksheet.Load(filepath); } }; saveToolStripButton.Click = (s, e) => SaveDocument(); saveToolStripMenuItem.Click = (s, e) => SaveDocument(); saveAsToolStripMenuItem.Click = (s, e) => SaveAsDocument(); groupRowsToolStripMenuItem.Click = groupRowsToolStripMenuItem_Click; groupRowsToolStripMenuItem1.Click = groupRowsToolStripMenuItem_Click; ungroupRowsToolStripMenuItem.Click = ungroupRowsToolStripMenuItem_Click; ungroupRowsToolStripMenuItem1.Click = ungroupRowsToolStripMenuItem_Click; ungroupAllRowsToolStripMenuItem.Click = ungroupAllRowsToolStripMenuItem_Click; ungroupAllRowsToolStripMenuItem1.Click = ungroupAllRowsToolStripMenuItem_Click; groupColumnsToolStripMenuItem.Click = groupColumnsToolStripMenuItem_Click; groupColumnsToolStripMenuItem1.Click = groupColumnsToolStripMenuItem_Click; ungroupColumnsToolStripMenuItem.Click = ungroupColumnsToolStripMenuItem_Click; ungroupColumnsToolStripMenuItem1.Click = ungroupColumnsToolStripMenuItem_Click; ungroupAllColumnsToolStripMenuItem.Click = ungroupAllColumnsToolStripMenuItem_Click; ungroupAllColumnsToolStripMenuItem1.Click = ungroupAllColumnsToolStripMenuItem_Click; hideRowsToolStripMenuItem.Click = (s, e) => this.grid.DoAction(new HideRowsAction( this.CurrentWorksheet.SelectionRange.Row, this.CurrentWorksheet.SelectionRange.Rows)); unhideRowsToolStripMenuItem.Click = (s, e) => this.grid.DoAction(new UnhideRowsAction( this.CurrentWorksheet.SelectionRange.Row, this.CurrentWorksheet.SelectionRange.Rows)); hideColumnsToolStripMenuItem.Click = (s, e) => this.grid.DoAction(new HideColumnsAction( this.CurrentWorksheet.SelectionRange.Col, this.CurrentWorksheet.SelectionRange.Cols)); unhideColumnsToolStripMenuItem.Click = (s, e) => this.grid.DoAction(new UnhideColumnsAction( this.CurrentWorksheet.SelectionRange.Col, this.CurrentWorksheet.SelectionRange.Cols)); // freeze to cell / edges freezeToCellToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.LeftTop); freezeToLeftToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.Left); freezeToTopToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.Top); freezeToRightToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.Right); freezeToBottomToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.Bottom); freezeToLeftTopToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.LeftTop); freezeToLeftBottomToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.LeftBottom); freezeToRightTopToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.RightTop); freezeToRightBottomToolStripMenuItem.Click = (s, e) => FreezeToEdge(FreezeArea.RightBottom); grid.GotFocus = (s, e) => { cutToolStripButton.Enabled = cutToolStripMenuItem.Enabled = pasteToolStripButton.Enabled = pasteToolStripMenuItem.Enabled = copyToolStripButton.Enabled = copyToolStripMenuItem.Enabled = undoToolStripButton.Enabled = undoToolStripMenuItem.Enabled = redoToolStripButton.Enabled = redoToolStripMenuItem.Enabled = repeatLastActionToolStripMenuItem.Enabled = rowCutToolStripMenuItem.Enabled = rowCopyToolStripMenuItem.Enabled = rowPasteToolStripMenuItem.Enabled = colCutToolStripMenuItem.Enabled = colCopyToolStripMenuItem.Enabled = colPasteToolStripMenuItem.Enabled = true; }; grid.LostFocus = (s, e) => { cutToolStripButton.Enabled = cutToolStripMenuItem.Enabled = pasteToolStripButton.Enabled = pasteToolStripMenuItem.Enabled = copyToolStripButton.Enabled = copyToolStripMenuItem.Enabled = undoToolStripButton.Enabled = undoToolStripMenuItem.Enabled = redoToolStripButton.Enabled = redoToolStripMenuItem.Enabled = repeatLastActionToolStripMenuItem.Enabled = rowCutToolStripMenuItem.Enabled = rowCopyToolStripMenuItem.Enabled = rowPasteToolStripMenuItem.Enabled = colCutToolStripMenuItem.Enabled = colCopyToolStripMenuItem.Enabled = colPasteToolStripMenuItem.Enabled = false; }; defineNamedRangeToolStripMenuItem.Click = (s, e) => { var sheet = this.CurrentWorksheet; var name = sheet.GetNameByRange(sheet.SelectionRange); NamedRange namedRange = null; if (!string.IsNullOrEmpty(name)) { namedRange = sheet.GetNamedRange(name); } using (DefineNamedRangeDialog dnrf = new DefineNamedRangeDialog()) { dnrf.Range = sheet.SelectionRange; if (namedRange != null) { dnrf.RangeName = name; dnrf.Comment = namedRange.Comment; } if (dnrf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var newName = dnrf.RangeName; var existedRange = sheet.GetNamedRange(newName); if (existedRange != null) { if (MessageBox.Show(this, InvestmentAnalysis.LangRes.LangResource.Msg_Named_Range_Overwrite, Application.ProductName, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Cancel) { return; } sheet.UndefineNamedRange(newName); } var range = NamedRangeManageForm.DefineNamedRange(this, sheet, newName, dnrf.Comment, dnrf.Range); if (this.formulaBar != null && this.formulaBar.Visible) { this.formulaBar.RefreshCurrentAddress(); } } } }; this.nameManagerToolStripMenuItem.Click = (s, e) => { if (this.nameManagerForm == null || this.nameManagerForm.IsDisposed) { this.nameManagerForm = new NamedRangeManageForm(this.grid); } this.nameManagerForm.Show(this); }; tracePrecedentsToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.TraceCellPrecedents(this.CurrentWorksheet.FocusPos); traceDependentsToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.TraceCellDependents(this.CurrentWorksheet.FocusPos); removeAllArrowsToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.RemoveRangeAllTraceArrows(this.CurrentWorksheet.SelectionRange); removePrecedentArrowsToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.IterateCells(this.CurrentWorksheet.SelectionRange, (r, c, cell) => this.CurrentWorksheet.RemoveCellTracePrecedents(cell)); removeDependentArrowsToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.IterateCells(this.CurrentWorksheet.SelectionRange, (r, c, cell) => this.CurrentWorksheet.RemoveCellTraceDependents(cell)); columnPropertiesToolStripMenuItem.Click = (s, e) => { var worksheet = this.CurrentWorksheet; int index = worksheet.SelectionRange.Col; int count = worksheet.SelectionRange.Cols; using (var hf = new HeaderPropertyDialog(RowOrColumn.Column)) { var sampleHeader = worksheet.ColumnHeaders[index]; hf.HeaderText = sampleHeader.Text; hf.HeaderTextColor = sampleHeader.TextColor ?? Color.Empty; hf.DefaultCellBody = sampleHeader.DefaultCellBody; hf.AutoFitToCell = sampleHeader.IsAutoWidth; if (hf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var newText = string.IsNullOrEmpty(hf.HeaderText) ? null : hf.HeaderText; for (int i = index; i < index count; i ) { var header = worksheet.ColumnHeaders[i]; if (string.IsNullOrEmpty(header.Text) || newText == null) { header.Text = newText; } header.TextColor = hf.HeaderTextColor; header.DefaultCellBody = hf.DefaultCellBody; header.IsAutoWidth = hf.AutoFitToCell; } } } }; rowPropertiesToolStripMenuItem.Click = (s, e) => { var sheet = this.grid.CurrentWorksheet; int index = sheet.SelectionRange.Row; int count = sheet.SelectionRange.Rows; using (var hpf = new HeaderPropertyDialog(RowOrColumn.Row)) { var sampleHeader = sheet.RowHeaders[index]; hpf.HeaderText = sampleHeader.Text; hpf.HeaderTextColor = sampleHeader.TextColor ?? Color.Empty; hpf.RowHeaderWidth = sheet.RowHeaderWidth; hpf.AutoFitToCell = sampleHeader.IsAutoHeight; if (hpf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var newText = string.IsNullOrEmpty(hpf.HeaderText) ? null : hpf.HeaderText; for (int i = index; i < index count; i ) { var header = sheet.RowHeaders[i]; if (string.IsNullOrEmpty(header.Text) || newText == null) { header.Text = newText; } header.TextColor = hpf.HeaderTextColor; header.IsAutoHeight = hpf.AutoFitToCell; } if (hpf.RowHeaderWidth != sheet.RowHeaderWidth) { sheet.RowHeaderWidth = hpf.RowHeaderWidth; } } } }; rowCutToolStripMenuItem.Click = this.cutRangeToolStripMenuItem_Click; rowCopyToolStripMenuItem.Click = this.copyRangeToolStripMenuItem_Click; rowPasteToolStripMenuItem.Click = this.pasteRangeToolStripMenuItem_Click; colCutToolStripMenuItem.Click = this.cutRangeToolStripMenuItem_Click; colCopyToolStripMenuItem.Click = this.copyRangeToolStripMenuItem_Click; colPasteToolStripMenuItem.Click = this.pasteRangeToolStripMenuItem_Click; rowFormatCellsToolStripMenuItem.Click = this.formatCellToolStripMenuItem_Click; colFormatCellsToolStripMenuItem.Click = this.formatCellToolStripMenuItem_Click; printSettingsToolStripMenuItem.Click = this.printSettingsToolStripMenuItem_Click; printToolStripMenuItem.Click = PrintToolStripMenuItem_Click; var noneTypeMenuItem = new ToolStripMenuItem(LangResource.None); noneTypeMenuItem.Click = cellTypeNoneMenuItem_Click; changeCellsTypeToolStripMenuItem.DropDownItems.Add(noneTypeMenuItem); changeCellsTypeToolStripMenuItem.DropDownItems.Add(new ToolStripSeparator()); var noneTypeMenuItem2 = new ToolStripMenuItem(LangResource.None); noneTypeMenuItem2.Click = cellTypeNoneMenuItem_Click; changeCellsTypeToolStripMenuItem2.DropDownItems.Add(noneTypeMenuItem2); changeCellsTypeToolStripMenuItem2.DropDownItems.Add(new ToolStripSeparator()); foreach (var cellType in CellTypesManager.CellTypes) { var name = cellType.Key; if (name.EndsWith("Cell")) name = name.Substring(0, name.Length - 4); var menuItem = new ToolStripMenuItem(name) { Tag = cellType.Value, }; menuItem.Click = cellTypeMenuItem_Click; changeCellsTypeToolStripMenuItem.DropDownItems.Add(menuItem); var menuItem2 = new ToolStripMenuItem(name) { Tag = cellType.Value, }; menuItem2.Click = cellTypeMenuItem_Click; changeCellsTypeToolStripMenuItem2.DropDownItems.Add(menuItem2); } rowContextMenuStrip.Opening = (s, e) => { insertRowPageBreakToolStripMenuItem.Enabled = !this.grid.CurrentWorksheet.PrintableRange.IsEmpty; removeRowPageBreakToolStripMenuItem.Enabled = this.grid.CurrentWorksheet.RowPageBreaks.Contains(this.grid.CurrentWorksheet.FocusPos.Row); }; columnContextMenuStrip.Opening = (s, e) => { insertColPageBreakToolStripMenuItem.Enabled = !this.grid.CurrentWorksheet.PrintableRange.IsEmpty; removeColPageBreakToolStripMenuItem.Enabled = this.grid.CurrentWorksheet.ColumnPageBreaks.Contains(this.grid.CurrentWorksheet.FocusPos.Col); }; this.AutoFunctionSumToolStripMenuItem.Click = (s, e) => ApplyFunctionToSelectedRange("SUM"); this.AutoFunctionAverageToolStripMenuItem.Click = (s, e) => ApplyFunctionToSelectedRange("AVERAGE"); this.AutoFunctionCountToolStripMenuItem.Click = (s, e) => ApplyFunctionToSelectedRange("COUNT"); this.AutoFunctionMaxToolStripMenuItem.Click = (s, e) => ApplyFunctionToSelectedRange("MAX"); this.AutoFunctionMinToolStripMenuItem.Click = (s, e) => ApplyFunctionToSelectedRange("MIN"); this.focusStyleDefaultToolStripMenuItem.CheckedChanged = (s, e) => { if (this.focusStyleDefaultToolStripMenuItem.Checked) this.CurrentWorksheet.FocusPosStyle = FocusPosStyle.Default; }; this.focusStyleNoneToolStripMenuItem.CheckedChanged = (s, e) => { if (focusStyleNoneToolStripMenuItem.Checked) this.CurrentWorksheet.FocusPosStyle = FocusPosStyle.None; }; #if EX_SCRIPT scriptEditorToolStripMenuItem.Click = (s, e) => { if (scriptEditor == null || scriptEditor.IsDisposed) { scriptEditor = new ReoScriptEditor(); scriptEditor.Srm = this.grid.Srm; // synchronize script from the editor to control once the script is compiled scriptEditor.ScriptCompiled = (ss, ee) => { this.grid.Script = scriptEditor.Script; }; } scriptEditor.Show(); if (this.grid.Script == null) { this.grid.Script = Resources._default; } scriptEditor.Script = this.grid.Script; scriptEditor.Disposed = (ss, ee) => this.grid.Script = scriptEditor.Script; }; runFunctionToolStripMenuItem.Click = (s, e) => { using (var runFuncForm = new RunFunctionForm()) { Cursor = Cursors.WaitCursor; if (this.grid.Srm != null && this.grid.Script != null) { var compiledScript = this.grid.Srm.Compile( scriptEditor.Visible ? scriptEditor.Script : this.grid.Script); runFuncForm.Srm = this.grid.Srm; runFuncForm.Script = compiledScript; } Cursor = Cursors.Default; runFuncForm.ShowDialog(this); } }; #else // !EX_SCRIPT //scriptToolStripMenuItem.Visible = false; scriptEditorToolStripMenuItem.Click = (s, e) => { MessageBox.Show("Script execution is not supported by this edition.", Application.ProductName); }; #endif // EX_SCRIPT homepageToolStripMenuItem.Click = (s, e) => { try { Process.Start(LangResource.HP_Homepage); } catch { } }; documentationToolStripMenuItem.Click = (s, e) => { try { Process.Start(LangResource.HP_Homepage_Document); } catch { } }; insertColPageBreakToolStripMenuItem.Click = insertColPageBreakToolStripMenuItem_Click; insertRowPageBreakToolStripMenuItem.Click = insertRowPageBreakToolStripMenuItem_Click; removeColPageBreakToolStripMenuItem.Click = removeColPageBreakToolStripMenuItem_Click; removeRowPageBreakToolStripMenuItem.Click = removeRowPageBreakToolStripMenuItem_Click; filterToolStripMenuItem.Click = filterToolStripMenuItem_Click; clearFilterToolStripMenuItem.Click = clearFilterToolStripMenuItem_Click; columnFilterToolStripMenuItem.Click = filterToolStripMenuItem_Click; clearColumnFilterToolStripMenuItem.Click = clearFilterToolStripMenuItem_Click; this.grid.ExceptionHappened = (s, e) => { if (e.Exception is RangeIntersectionException) { MessageBox.Show(this, LangResource.Msg_Range_Intersection_Exception, "ReoGrid Editor", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else if (e.Exception is OperationOnReadonlyCellException) { MessageBox.Show(this, LangResource.Msg_Operation_Aborted, "ReoGrid Editor", MessageBoxButtons.OK, MessageBoxIcon.Stop); } }; this.grid.CurrentWorksheetChanged = (s, e) => { UpdateMenuAndToolStrips(); worksheet_GridScaled(this.CurrentWorksheet, e); UpdateWorksheetSettings(this.grid.CurrentWorksheet); UpdateSelectionModeAndStyle(); UpdateSelectionForwardDirection(); }; this.grid.SettingsChanged = (s, e) => { sheetSwitcherToolStripMenuItem.Checked = this.grid.HasSettings(WorkbookSettings.View_ShowSheetTabControl); showHorizontaScrolllToolStripMenuItem.Checked = this.grid.HasSettings(WorkbookSettings.View_ShowHorScroll); showVerticalScrollbarToolStripMenuItem.Checked = this.grid.HasSettings(WorkbookSettings.View_ShowVerScroll); }; this.clearAllToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.ClearRangeContent(this.CurrentSelectionRange, CellElementFlag.All); this.clearDataToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.ClearRangeContent(this.CurrentSelectionRange, CellElementFlag.Data); this.clearDataFormatToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.ClearRangeContent(this.CurrentSelectionRange, CellElementFlag.DataFormat); this.clearFormulaToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.ClearRangeContent(this.CurrentSelectionRange, CellElementFlag.Formula); this.clearCellBodyToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.ClearRangeContent(this.CurrentSelectionRange, CellElementFlag.Body); this.clearStylesToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.ClearRangeContent(this.CurrentSelectionRange, CellElementFlag.Style); this.clearBordersToolStripButton.Click = (s, e) => this.CurrentWorksheet.ClearRangeContent(this.CurrentSelectionRange, CellElementFlag.Border); this.exportCurrentWorksheetToolStripMenuItem.Click = (s, e) => ExportAsCsv(RangePosition.EntireRange); this.exportSelectedRangeToolStripMenuItem.Click = (s, e) => ExportAsCsv(CurrentSelectionRange); this.dragToMoveRangeToolStripMenuItem.CheckedChanged = (s, e) => CurrentWorksheet.SetSettings( WorksheetSettings.Edit_DragSelectionToMoveCells, this.dragToMoveRangeToolStripMenuItem.Checked); this.dragToFillSerialToolStripMenuItem.CheckedChanged = (s, e) => CurrentWorksheet.SetSettings( WorksheetSettings.Edit_DragSelectionToFillSerial, this.dragToFillSerialToolStripMenuItem.Checked); this.suspendReferenceUpdatingToolStripMenuItem.CheckedChanged = (s, e) => this.CurrentWorksheet.SetSettings(WorksheetSettings.Formula_AutoUpdateReferenceCell, !this.suspendReferenceUpdatingToolStripMenuItem.Checked); this.recalculateWorksheetToolStripMenuItem.Click = (s, e) => this.CurrentWorksheet.Recalculate(); #if RG_DEBUG this.showDebugFormToolStripButton.Click = new System.EventHandler(this.showDebugFormToolStripButton_Click); #region Debug Validation Events this.grid.WorksheetInserted = (ss, ee) => { var worksheet = ee.Worksheet; worksheet.RowsInserted = (s, e) => _Debug_Auto_Validate_All((Worksheet)s); worksheet.ColumnsInserted = (s, e) => _Debug_Auto_Validate_All((Worksheet)s); worksheet.RowsDeleted = (s, e) => _Debug_Auto_Validate_All((Worksheet)s); worksheet.ColumnsDeleted = (s, e) => _Debug_Auto_Validate_All((Worksheet)s); worksheet.RangeMerged = (s, e) => _Debug_Auto_Validate_All((Worksheet)s); worksheet.RangeUnmerged = (s, e) => _Debug_Auto_Validate_All((Worksheet)s, e.Range); worksheet.AfterPaste = (s, e) => _Debug_Auto_Validate_All((Worksheet)s); }; this.grid.Undid = (s, e) => _Debug_Auto_Validate_All(((BaseWorksheetAction)e.Action).Worksheet); this.grid.Redid = (s, e) => _Debug_Auto_Validate_All(((BaseWorksheetAction)e.Action).Worksheet); showDebugInfoToolStripMenuItem.Click = (s, e) => { showDebugFormToolStripButton.PerformClick(); showDebugInfoToolStripMenuItem.Checked = showDebugFormToolStripButton.Checked; }; validateBorderSpanToolStripMenuItem.Click = (s, e) => _Debug_Validate_BorderSpan(this.CurrentWorksheet, true); validateMergedRangeToolStripMenuItem.Click = (s, e) => _Debug_Validate_Merged_Cell(this.CurrentWorksheet, true); validateAllToolStripMenuItem.Click = (s, e) => _Debug_Validate_All(this.CurrentWorksheet, true); #endregion // Debug Validation Events #endif // RG_DEBUG ResumeLayout(); } private void ExportAsCsv(RangePosition range) { using (SaveFileDialog dlg = new SaveFileDialog()) { dlg.Filter = LangResource.Filter_Export_As_CSV; dlg.FileName = Path.GetFileNameWithoutExtension(this.CurrentFilePath); if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { using (FileStream fs = new FileStream(dlg.FileName, FileMode.Create, FileAccess.Write, FileShare.Read)) { CurrentWorksheet.ExportAsCSV(fs, range); } #if DEBUG Process.Start(dlg.FileName); #endif } }; } void worksheet_SelectionModeChanged(object sender, EventArgs e) { UpdateSelectionModeAndStyle(); } void worksheet_SelectionForwardDirectionChanged(object sender, EventArgs e) { UpdateSelectionForwardDirection(); } void worksheet_Resetted(object sender, EventArgs e) { statusToolStripStatusLabel.Text = string.Empty; } void worksheet_SettingsChanged(object sender, SettingsChangedEventArgs e) { var worksheet = sender as Worksheet; if (worksheet != null) UpdateWorksheetSettings(worksheet); } void UpdateWorksheetSettings(Worksheet sheet) { bool visible = false; visible = sheet.HasSettings(WorksheetSettings.View_ShowGridLine); if (showGridLinesToolStripMenuItem.Checked != visible) showGridLinesToolStripMenuItem.Checked = visible; visible = sheet.HasSettings(WorksheetSettings.View_ShowPageBreaks); if (showPageBreakToolStripMenuItem.Checked != visible) showPageBreakToolStripMenuItem.Checked = visible; visible = sheet.HasSettings(WorksheetSettings.View_ShowFrozenLine); if (showFrozenLineToolStripMenuItem.Checked != visible) showFrozenLineToolStripMenuItem.Checked = visible; visible = sheet.HasSettings(WorksheetSettings.View_ShowRowHeader); if (showRowHeaderToolStripMenuItem.Checked != visible) showRowHeaderToolStripMenuItem.Checked = visible; visible = sheet.HasSettings(WorksheetSettings.View_ShowColumnHeader); if (showColumnHeaderToolStripMenuItem.Checked != visible) showColumnHeaderToolStripMenuItem.Checked = visible; visible = sheet.HasSettings(WorksheetSettings.View_AllowShowRowOutlines); if (showRowOutlineToolStripMenuItem.Checked != visible) showRowOutlineToolStripMenuItem.Checked = visible; visible = sheet.HasSettings(WorksheetSettings.View_AllowShowColumnOutlines); if (showColumnOutlineToolStripMenuItem.Checked != visible) showColumnOutlineToolStripMenuItem.Checked = visible; var check = sheet.HasSettings(WorksheetSettings.Edit_DragSelectionToMoveCells); if (this.dragToMoveRangeToolStripMenuItem.Checked != check) this.dragToMoveRangeToolStripMenuItem.Checked = check; check = sheet.HasSettings(WorksheetSettings.Edit_DragSelectionToFillSerial); if (this.dragToFillSerialToolStripMenuItem.Checked != check) this.dragToFillSerialToolStripMenuItem.Checked = check; check = !sheet.HasSettings(WorksheetSettings.Formula_AutoUpdateReferenceCell); if (this.suspendReferenceUpdatingToolStripMenuItem.Checked != check) this.suspendReferenceUpdatingToolStripMenuItem.Checked = check; sheetReadonlyToolStripMenuItem.Checked = sheet.HasSettings(WorksheetSettings.Edit_Readonly); } void cellTypeNoneMenuItem_Click(object sender, EventArgs e) { var worksheet = this.CurrentWorksheet; if (worksheet != null) { worksheet.IterateCells(worksheet.SelectionRange, false, (r, c, cell) => { cell.Body = null; return true; }); } } void cellTypeMenuItem_Click(object sender, EventArgs e) { var worksheet = this.CurrentWorksheet; var menuItem = sender as ToolStripMenuItem; if (menuItem != null && menuItem.Tag is Type && worksheet != null) { foreach (var cell in worksheet.Ranges[worksheet.SelectionRange].Cells) { cell.Body = System.Activator.CreateInstance((Type)menuItem.Tag) as ICellBody; } } } void textWrapToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentSelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.TextWrap, TextWrapMode = textWrapToolStripButton.Checked ? TextWrapMode.WordBreak : TextWrapMode.NoWrap, })); } void worksheet_GridScaled(object sender, EventArgs e) { var worksheet = (Worksheet)sender; zoomToolStripDropDownButton.Text = worksheet.ScaleFactor * 100 "%"; } #endregion // Constructor #region Utility #if RG_DEBUG #region Debug Validations /// <summary> /// Use for Debug mode. Check for border span is valid. /// </summary> /// <param name="showSuccessMsg"></param> /// <returns></returns> bool _Debug_Validate_BorderSpan(Worksheet sheet, bool showSuccessMsg) { bool rs = sheet._Debug_Validate_BorderSpan(); if (rs) { if (showSuccessMsg) ShowStatus("Border span validation ok."); } else { ShowError("Border span test failed."); if (!showDebugInfoToolStripMenuItem.Checked) { showDebugInfoToolStripMenuItem.PerformClick(); } } return rs; } bool _Debug_Validate_Merged_Cell(Worksheet sheet, bool showSuccessMsg) { bool rs = sheet._Debug_Validate_MergedCells(); if (rs) { if (showSuccessMsg) ShowStatus("Merged range validation ok."); } else { ShowError("Merged range validation failed."); if (!showDebugInfoToolStripMenuItem.Checked) { showDebugInfoToolStripMenuItem.PerformClick(); } } return rs; } bool _Debug_Validate_Unmerged_Range(Worksheet sheet, bool showSuccessMsg, RangePosition range) { bool rs = sheet._Debug_Validate_Unmerged_Range(range); if (rs) { if (showSuccessMsg) ShowStatus("Unmerged range validation ok."); } else { ShowError("Unmerged range validation failed."); if (!showDebugInfoToolStripMenuItem.Checked) { showDebugInfoToolStripMenuItem.PerformClick(); } } return rs; } bool _Debug_Validate_All(Worksheet sheet, bool showSuccessMsg) { return _Debug_Validate_All(sheet, showSuccessMsg, RangePosition.EntireRange); } bool _Debug_Validate_All(Worksheet sheet, RangePosition range) { return _Debug_Validate_All(sheet, false, range); } bool _Debug_Validate_All(Worksheet sheet, bool showSuccessMsg, RangePosition range) { bool rs = _Debug_Validate_BorderSpan(sheet, showSuccessMsg); if (rs) rs = _Debug_Validate_Merged_Cell(sheet, showSuccessMsg); if (rs) rs = _Debug_Validate_Unmerged_Range(sheet, showSuccessMsg, range); return rs; } bool _Debug_Auto_Validate_All(Worksheet sheet) { return _Debug_Validate_All(sheet, false); } bool _Debug_Auto_Validate_All(Worksheet sheet, RangePosition range) { return _Debug_Validate_All(sheet, range); } #endregion // Debug Validations #endif // RG_DEBUG public ReoGridControl GridControl { get { return this.grid; } } public Worksheet CurrentWorksheet { get { return this.grid.CurrentWorksheet; } } public RangePosition CurrentSelectionRange { get { return this.grid.CurrentWorksheet.SelectionRange; } set { this.grid.CurrentWorksheet.SelectionRange = value; } } #if EX_SCRIPT private ReoScriptEditor scriptEditor; public ReoScriptEditor ScriptEditor { get { return scriptEditor; } } #endif // EX_SCRIPT internal void ShowStatus(string msg) { ShowStatus(msg, false); } internal void ShowStatus(string msg, bool error) { statusToolStripStatusLabel.Text = msg; statusToolStripStatusLabel.ForeColor = error ? Color.Red : SystemColors.WindowText; } public void ShowError(string msg) { ShowStatus(msg, true); } private void UpdateMenuAndToolStripsWhenAction(object sender, EventArgs e) { UpdateMenuAndToolStrips(); } private void Undo(object sender, EventArgs e) { this.grid.Undo(); } private void Redo(object sender, EventArgs e) { this.grid.Redo(); } void zoomToolStripDropDownButton_TextChanged(object sender, EventArgs e) { if (isUIUpdating) return; if (zoomToolStripDropDownButton.Text.Length > 0) { int value = 100; if (int.TryParse(zoomToolStripDropDownButton.Text.Substring(0, zoomToolStripDropDownButton.Text.Length - 1), out value)) { float scale = (float)value / 100f; scale = (float)Math.Round(scale, 1); this.CurrentWorksheet.SetScale(scale); } } } void grid_SelectionRangeChanged(object sender, RangeEventArgs e) { // get event source worksheet var worksheet = sender as Worksheet; // if source worksheet is current worksheet, update menus and tool strips if (worksheet == this.CurrentWorksheet) { if (worksheet.SelectionRange == RangePosition.Empty) { rangeInfoToolStripStatusLabel.Text = "Selection None"; } else { rangeInfoToolStripStatusLabel.Text = string.Format("{0} {1} x {2}", worksheet.SelectionRange.ToString(), worksheet.SelectionRange.Rows, worksheet.SelectionRange.Cols); } UpdateMenuAndToolStrips(); } } void SetupUILanguage() { #region Menu // File this.fileToolStripMenuItem.Text = LangResource.Menu_File; this.newToolStripMenuItem.Text = LangResource.Menu_File_New; this.newWindowToolStripMenuItem.Text = LangResource.Menu_File_New_Window; this.openToolStripMenuItem.Text = LangResource.Menu_File_Open; this.saveToolStripMenuItem.Text = LangResource.Menu_File_Save; this.saveAsToolStripMenuItem.Text = LangResource.Menu_File_Save_As; this.editXMLToolStripMenuItem.Text = LangResource.Menu_File_Edit_RGF_XML; this.exportAsHtmlToolStripMenuItem.Text = LangResource.Menu_File_Export_As_HTML; this.exportAsCSVToolStripMenuItem.Text = LangResource.Menu_File_Export_As_CSV; this.exportSelectedRangeToolStripMenuItem.Text = LangResource.Menu_File_Export_As_CSV_Selected_Range; this.exportCurrentWorksheetToolStripMenuItem.Text = LangResource.Menu_File_Export_As_CSV_Current_Worksheet; this.printPreviewToolStripMenuItem.Text = LangResource.Menu_File_Print_Preview; this.printSettingsToolStripMenuItem.Text = LangResource.Menu_File_Print_Settings; this.printToolStripMenuItem.Text = LangResource.Menu_File_Print; this.exitToolStripMenuItem.Text = LangResource.Menu_File_Exit; // Edit this.editToolStripMenuItem.Text = LangResource.Menu_Edit; this.undoToolStripMenuItem.Text = LangResource.Menu_Undo; this.redoToolStripMenuItem.Text = LangResource.Menu_Redo; this.repeatLastActionToolStripMenuItem.Text = LangResource.Menu_Edit_Repeat_Last_Action; this.cutToolStripMenuItem.Text = LangResource.Menu_Cut; this.copyToolStripMenuItem.Text = LangResource.Menu_Copy; this.pasteToolStripMenuItem.Text = LangResource.Menu_Paste; this.clearToolStripMenuItem.Text = LangResource.Menu_Edit_Clear; this.clearAllToolStripMenuItem.Text = LangResource.All; this.clearDataToolStripMenuItem.Text = LangResource.Data; this.clearDataFormatToolStripMenuItem.Text = LangResource.Data_Format; this.clearFormulaToolStripMenuItem.Text = LangResource.Formula; this.clearCellBodyToolStripMenuItem.Text = LangResource.CellBody; this.clearStylesToolStripMenuItem.Text = LangResource.Style; this.clearBordersToolStripMenuItem.Text = LangResource.Border; this.focusCellStyleToolStripMenuItem.Text = LangResource.Menu_Edit_Focus_Cell_Style; this.focusStyleDefaultToolStripMenuItem.Text = LangResource.Default; this.focusStyleNoneToolStripMenuItem.Text = LangResource.None; this.selectionToolStripMenuItem.Text = LangResource.Menu_Edit_Selection; this.dragToMoveRangeToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Drag_To_Move_Content; this.dragToFillSerialToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Drag_To_Fill_Serial; this.selectionStyleToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Style; this.selStyleDefaultToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Style_Default; this.selStyleFocusRectToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Style_Focus_Rect; this.selStyleNoneToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Style_None; this.selectionModeToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Mode; this.selModeNoneToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Mode_None; this.selModeCellToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Mode_Cell; this.selModeRangeToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Mode_Range; this.selModeRowToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Mode_Row; this.selModeColumnToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Mode_Column; this.selectionMoveDirectionToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Move_Direction; this.selDirRightToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Move_Direction_Right; this.selDirDownToolStripMenuItem.Text = LangResource.Menu_Edit_Selection_Move_Direction_Down; this.selectAllToolStripMenuItem.Text = LangResource.Menu_Edit_Select_All; // View this.viewToolStripMenuItem.Text = LangResource.Menu_View; this.componentsToolStripMenuItem.Text = LangResource.Menu_View_Components; this.toolbarToolStripMenuItem.Text = LangResource.Menu_View_Components_Toolbar; this.formulaBarToolStripMenuItem.Text = LangResource.Menu_View_Components_FormulaBar; this.statusBarToolStripMenuItem.Text = LangResource.Menu_View_Components_StatusBar; this.visibleToolStripMenuItem.Text = LangResource.Menu_View_Visible; this.showGridLinesToolStripMenuItem.Text = LangResource.Menu_View_Visible_Grid_Lines; this.showPageBreakToolStripMenuItem.Text = LangResource.Menu_View_Visible_Page_Breaks; this.showFrozenLineToolStripMenuItem.Text = LangResource.Menu_View_Visible_Forzen_Line; this.sheetSwitcherToolStripMenuItem.Text = LangResource.Menu_View_Visible_Sheet_Tab; this.showHorizontaScrolllToolStripMenuItem.Text = LangResource.Menu_View_Visible_Horizontal_ScrollBar; this.showVerticalScrollbarToolStripMenuItem.Text = LangResource.Menu_View_Visible_Vertical_ScrollBar; this.showRowHeaderToolStripMenuItem.Text = LangResource.Menu_View_Visible_Row_Header; this.showColumnHeaderToolStripMenuItem.Text = LangResource.Menu_View_Visible_Column_Header; this.showRowOutlineToolStripMenuItem.Text = LangResource.Menu_View_Visible_Row_Outline_Panel; this.showColumnOutlineToolStripMenuItem.Text = LangResource.Menu_View_Visible_Column_Outline_Panel; this.resetAllPageBreaksToolStripMenuItem.Text = LangResource.Menu_Reset_All_Page_Breaks; this.freezeToCellToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Cell; this.freezeToSpecifiedEdgeToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges; this.freezeToLeftToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Left; this.freezeToRightToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Right; this.freezeToTopToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Top; this.freezeToBottomToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Bottom; this.freezeToLeftTopToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Top_Left; this.freezeToLeftBottomToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Bottom_Left; this.freezeToRightTopToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Top_Right; this.freezeToRightBottomToolStripMenuItem.Text = LangResource.Menu_View_Freeze_To_Edges_Bottom_Right; this.unfreezeToolStripMenuItem.Text = LangResource.Menu_View_Unfreeze; // Cells this.cellsToolStripMenuItem.Text = LangResource.Menu_Cells; this.mergeCellsToolStripMenuItem.Text = LangResource.Menu_Cells_Merge_Cells; this.unmergeCellsToolStripMenuItem.Text = LangResource.Menu_Cells_Unmerge_Cells; this.changeCellsTypeToolStripMenuItem.Text = LangResource.Menu_Change_Cells_Type; this.formatCellsToolStripMenuItem.Text = LangResource.Menu_Format_Cells; // Sheet this.sheetToolStripMenuItem.Text = LangResource.Menu_Sheet; this.filterToolStripMenuItem.Text = LangResource.Menu_Sheet_Filter; this.clearFilterToolStripMenuItem.Text = LangResource.Menu_Sheet_Clear_Filter; this.groupToolStripMenuItem.Text = LangResource.Menu_Sheet_Group; this.groupRowsToolStripMenuItem.Text = LangResource.Menu_Sheet_Group_Rows; this.groupColumnsToolStripMenuItem.Text = LangResource.Menu_Sheet_Group_Columns; this.ungroupToolStripMenuItem.Text = LangResource.Menu_Sheet_Ungroup; this.ungroupRowsToolStripMenuItem.Text = LangResource.Menu_Sheet_Ungroup_Selection_Rows; this.ungroupAllRowsToolStripMenuItem.Text = LangResource.Menu_Sheet_Ungroup_All_Rows; this.ungroupColumnsToolStripMenuItem.Text = LangResource.Menu_Sheet_Ungroup_Selection_Columns; this.ungroupAllColumnsToolStripMenuItem.Text = LangResource.Menu_Sheet_Ungroup_All_Columns; this.insertToolStripMenuItem.Text = LangResource.Menu_Sheet_Insert; this.resizeToolStripMenuItem.Text = LangResource.Menu_Sheet_Resize; this.sheetReadonlyToolStripMenuItem.Text = LangResource.Menu_Edit_Readonly; // Formula this.formulaToolStripMenuItem.Text = LangResource.Menu_Formula; this.autoFunctionToolStripMenuItem.Text = LangResource.Menu_Formula_Auto_Function; this.defineNamedRangeToolStripMenuItem.Text = LangResource.Menu_Formula_Define_Name; this.nameManagerToolStripMenuItem.Text = LangResource.Menu_Formula_Name_Manager; this.tracePrecedentsToolStripMenuItem.Text = LangResource.Menu_Formula_Trace_Precedents; this.traceDependentsToolStripMenuItem.Text = LangResource.Menu_Formula_Trace_Dependents; this.removeArrowsToolStripMenuItem.Text = LangResource.Menu_Formula_Remove_Trace_Arrows; this.removeAllArrowsToolStripMenuItem.Text = LangResource.Menu_Formula_Remove_Trace_Arrows_Remove_All_Arrows; this.removePrecedentArrowsToolStripMenuItem.Text = LangResource.Menu_Formula_Remove_Trace_Arrows_Remove_Precedent_Arrows; this.removeDependentArrowsToolStripMenuItem.Text = LangResource.Menu_Formula_Remove_Trace_Arrows_Remove_Dependent_Arrows; this.suspendReferenceUpdatingToolStripMenuItem.Text = LangResource.Menu_Formula_Suspend_Reference_Updates; this.recalculateWorksheetToolStripMenuItem.Text = LangResource.Menu_Formula_Recalculate_Worksheet; // Script this.scriptToolStripMenuItem.Text = LangResource.Menu_Script; this.scriptEditorToolStripMenuItem.Text = LangResource.Menu_Script_Script_Editor; this.runFunctionToolStripMenuItem.Text = LangResource.Menu_Script_Run_Function; // Tools this.toolsToolStripMenuItem.Text = LangResource.Menu_Tools; this.controlStyleToolStripMenuItem.Text = LangResource.Menu_Tools_Control_Appearance; this.helpToolStripMenuItem.Text = LangResource.Menu_Help; this.homepageToolStripMenuItem.Text = LangResource.Menu_Help_Homepage; this.documentationToolStripMenuItem.Text = LangResource.Menu_Help_Documents; this.aboutToolStripMenuItem.Text = LangResource.Menu_Help_About; // Column Context Menu this.colCutToolStripMenuItem.Text = LangResource.Menu_Cut; this.colCopyToolStripMenuItem.Text = LangResource.Menu_Copy; this.colPasteToolStripMenuItem.Text = LangResource.Menu_Paste; this.insertColToolStripMenuItem.Text = LangResource.CtxMenu_Col_Insert_Columns; this.deleteColumnToolStripMenuItem.Text = LangResource.CtxMenu_Col_Delete_Columns; this.resetToDefaultWidthToolStripMenuItem.Text = LangResource.CtxMenu_Col_Reset_To_Default_Width; this.columnWidthToolStripMenuItem.Text = LangResource.CtxMenu_Col_Column_Width; this.hideColumnsToolStripMenuItem.Text = LangResource.Menu_Hide; this.unhideColumnsToolStripMenuItem.Text = LangResource.Menu_Unhide; this.columnFilterToolStripMenuItem.Text = LangResource.CtxMenu_Col_Filter; this.clearColumnFilterToolStripMenuItem.Text = LangResource.CtxMenu_Col_Clear_Filter; this.groupColumnsToolStripMenuItem1.Text = LangResource.Menu_Group; this.ungroupColumnsToolStripMenuItem1.Text = LangResource.Menu_Ungroup; this.ungroupAllColumnsToolStripMenuItem1.Text = LangResource.Menu_Ungroup_All; this.insertColPageBreakToolStripMenuItem.Text = LangResource.Menu_Insert_Page_Break; this.removeColPageBreakToolStripMenuItem.Text = LangResource.Menu_Remove_Page_Break; this.columnPropertiesToolStripMenuItem.Text = LangResource.Menu_Property; this.colFormatCellsToolStripMenuItem.Text = LangResource.Menu_Format_Cells; // Row Context Menu this.rowCutToolStripMenuItem.Text = LangResource.Menu_Cut; this.rowCopyToolStripMenuItem.Text = LangResource.Menu_Copy; this.rowPasteToolStripMenuItem.Text = LangResource.Menu_Paste; this.insertRowToolStripMenuItem.Text = LangResource.CtxMenu_Row_Insert_Rows; this.deleteRowsToolStripMenuItem.Text = LangResource.CtxMenu_Row_Delete_Rows; this.resetToDefaultHeightToolStripMenuItem.Text = LangResource.CtxMenu_Row_Reset_to_Default_Height; this.rowHeightToolStripMenuItem.Text = LangResource.CtxMenu_Row_Row_Height; this.hideRowsToolStripMenuItem.Text = LangResource.Menu_Hide; this.unhideRowsToolStripMenuItem.Text = LangResource.Menu_Unhide; this.groupRowsToolStripMenuItem1.Text = LangResource.Menu_Group; this.ungroupRowsToolStripMenuItem1.Text = LangResource.Menu_Ungroup; this.ungroupAllRowsToolStripMenuItem1.Text = LangResource.Menu_Ungroup_All; this.insertRowPageBreakToolStripMenuItem.Text = LangResource.Menu_Insert_Page_Break; this.removeRowPageBreakToolStripMenuItem.Text = LangResource.Menu_Remove_Page_Break; this.rowPropertiesToolStripMenuItem.Text = LangResource.Menu_Property; this.rowFormatCellsToolStripMenuItem.Text = LangResource.Menu_Format_Cells; // Cell Context Menu this.cutRangeToolStripMenuItem.Text = LangResource.Menu_Cut; this.copyRangeToolStripMenuItem.Text = LangResource.Menu_Copy; this.pasteRangeToolStripMenuItem.Text = LangResource.Menu_Paste; this.mergeRangeToolStripMenuItem.Text = LangResource.CtxMenu_Cell_Merge; this.unmergeRangeToolStripMenuItem.Text = LangResource.CtxMenu_Cell_Unmerge; this.changeCellsTypeToolStripMenuItem2.Text = LangResource.Menu_Change_Cells_Type; this.formatCellToolStripMenuItem.Text = LangResource.Menu_Format_Cells; // Lead Header Context Menu this.resetAllPageBreaksToolStripMenuItem1.Text = LangResource.Menu_Reset_All_Page_Breaks; #endregion // Menu } #endregion // Utility #region Update Menus & Toolbars private bool isUIUpdating = false; private void UpdateMenuAndToolStrips() { if (isUIUpdating) return; isUIUpdating = true; var worksheet = this.CurrentWorksheet; WorksheetRangeStyle style = worksheet.GetCellStyles(worksheet.SelectionRange.StartPos); if (style != null) { // cross-thread exception Action set = () => { fontToolStripComboBox.Text = style.FontName; fontSizeToolStripComboBox.Text = style.FontSize.ToString(); boldToolStripButton.Checked = style.Bold; italicToolStripButton.Checked = style.Italic; strikethroughToolStripButton.Checked = style.Strikethrough; underlineToolStripButton.Checked = style.Underline; textColorPickToolStripItem.SolidColor = style.TextColor; backColorPickerToolStripButton.SolidColor = style.BackColor; textAlignLeftToolStripButton.Checked = style.HAlign == ReoGridHorAlign.Left; textAlignCenterToolStripButton.Checked = style.HAlign == ReoGridHorAlign.Center; textAlignRightToolStripButton.Checked = style.HAlign == ReoGridHorAlign.Right; distributedIndentToolStripButton.Checked = style.HAlign == ReoGridHorAlign.DistributedIndent; textAlignTopToolStripButton.Checked = style.VAlign == ReoGridVerAlign.Top; textAlignMiddleToolStripButton.Checked = style.VAlign == ReoGridVerAlign.Middle; textAlignBottomToolStripButton.Checked = style.VAlign == ReoGridVerAlign.Bottom; textWrapToolStripButton.Checked = style.TextWrapMode != TextWrapMode.NoWrap; RangeBorderInfoSet borderInfo = worksheet.GetRangeBorders(worksheet.SelectionRange); if (borderInfo.Left != null) { borderColorPickToolStripItem.SolidColor = borderInfo.Left.Color; } else if (borderInfo.Right != null) { borderColorPickToolStripItem.SolidColor = borderInfo.Right.Color; } else if (borderInfo.Top != null) { borderColorPickToolStripItem.SolidColor = borderInfo.Top.Color; } else if (borderInfo.Bottom != null) { borderColorPickToolStripItem.SolidColor = borderInfo.Bottom.Color; } else if (borderInfo.InsideHorizontal != null) { borderColorPickToolStripItem.SolidColor = borderInfo.InsideHorizontal.Color; } else if (borderInfo.InsideVertical != null) { borderColorPickToolStripItem.SolidColor = borderInfo.InsideVertical.Color; } else { borderColorPickToolStripItem.SolidColor = Color.Black; } undoToolStripButton.Enabled = undoToolStripMenuItem.Enabled = this.grid.CanUndo(); redoToolStripButton.Enabled = redoToolStripMenuItem.Enabled = this.grid.CanRedo(); repeatLastActionToolStripMenuItem.Enabled = this.grid.CanUndo() || this.grid.CanRedo(); cutToolStripButton.Enabled = cutToolStripMenuItem.Enabled = rowCutToolStripMenuItem.Enabled = colCutToolStripMenuItem.Enabled = worksheet.CanCut(); copyToolStripButton.Enabled = copyToolStripMenuItem.Enabled = rowCopyToolStripMenuItem.Enabled = colCopyToolStripMenuItem.Enabled = worksheet.CanCopy(); pasteToolStripButton.Enabled = pasteToolStripMenuItem.Enabled = rowPasteToolStripMenuItem.Enabled = colPasteToolStripMenuItem.Enabled = worksheet.CanPaste(); unfreezeToolStripMenuItem.Enabled = worksheet.IsFrozen; isUIUpdating = false; }; if (this.InvokeRequired) this.Invoke(set); else set(); } #if !DEBUG debugToolStripMenuItem.Enabled = false; #endif // DEBUG } private bool settingSelectionMode = false; private void UpdateSelectionModeAndStyle() { if (settingSelectionMode) return; settingSelectionMode = true; selModeNoneToolStripMenuItem.Checked = false; selModeCellToolStripMenuItem.Checked = false; selModeRangeToolStripMenuItem.Checked = false; selModeRowToolStripMenuItem.Checked = false; selModeColumnToolStripMenuItem.Checked = false; switch (this.CurrentWorksheet.SelectionMode) { case WorksheetSelectionMode.None: selModeNoneToolStripMenuItem.Checked = true; break; case WorksheetSelectionMode.Cell: selModeCellToolStripMenuItem.Checked = true; break; default: case WorksheetSelectionMode.Range: selModeRangeToolStripMenuItem.Checked = true; break; case WorksheetSelectionMode.Row: selModeRowToolStripMenuItem.Checked = true; break; case WorksheetSelectionMode.Column: selModeColumnToolStripMenuItem.Checked = true; break; } selStyleNoneToolStripMenuItem.Checked = false; selStyleDefaultToolStripMenuItem.Checked = false; selStyleFocusRectToolStripMenuItem.Checked = false; switch (this.CurrentWorksheet.SelectionStyle) { case WorksheetSelectionStyle.None: selStyleNoneToolStripMenuItem.Checked = true; break; default: case WorksheetSelectionStyle.Default: selStyleDefaultToolStripMenuItem.Checked = true; break; case WorksheetSelectionStyle.FocusRect: selStyleFocusRectToolStripMenuItem.Checked = true; break; } focusStyleDefaultToolStripMenuItem.Checked = false; focusStyleNoneToolStripMenuItem.Checked = false; switch (this.CurrentWorksheet.FocusPosStyle) { default: case FocusPosStyle.Default: focusStyleDefaultToolStripMenuItem.Checked = true; break; case FocusPosStyle.None: focusStyleNoneToolStripMenuItem.Checked = true; break; } settingSelectionMode = false; } private void UpdateSelectionForwardDirection() { switch (this.CurrentWorksheet.SelectionForwardDirection) { default: case SelectionForwardDirection.Right: selDirRightToolStripMenuItem.Checked = true; selDirDownToolStripMenuItem.Checked = false; break; case SelectionForwardDirection.Down: selDirRightToolStripMenuItem.Checked = false; selDirDownToolStripMenuItem.Checked = true; break; } } #endregion #region Document public string CurrentFilePath { get; set; } private string currentTempFilePath; /// <summary> /// Load spreadsheet form specified file /// </summary> /// <param name="path">path to load file</param> public void LoadFile(string path) { LoadFile(path, Encoding.Default); } /// <summary> /// Load spreadsheet from specified file /// </summary> /// <param name="path">path to load file</param> /// <param name="encoding">encoding to read input stream</param> public void LoadFile(string path, Encoding encoding) { this.CurrentFilePath = null; var worksheet = this.CurrentWorksheet; bool success = false; grid.CurrentWorksheet.Reset(); try { grid.Load(path, IO.FileFormat._Auto, encoding); success = true; } catch (FileNotFoundException ex) { success = false; MessageBox.Show(LangResource.Msg_File_Not_Found ex.FileName, "ReoGrid Editor", MessageBoxButtons.OK, MessageBoxIcon.Stop); } catch (Exception ex) { success = false; MessageBox.Show(LangResource.Msg_Load_File_Failed ex.Message, "ReoGrid Editor", MessageBoxButtons.OK, MessageBoxIcon.Stop); } if (success) { this.Text = System.IO.Path.GetFileName(path) " - ReoGrid Editor " this.ProductVersion; //showGridLinesToolStripMenuItem.Checked = worksheet.HasSettings(WorksheetSettings.View_ShowGuideLine); ShowStatus(string.Empty); this.CurrentFilePath = path; this.currentTempFilePath = null; #if EX_SCRIPT // check whether grid contains any scripts if (!string.IsNullOrEmpty(this.grid.Script)) { if (MessageBox.Show(LangResource.Msg_Load_Script_Prompt, LangResource.Msg_Load_Script_Prompt_Title, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { if (scriptEditor == null || scriptEditor.IsDisposed) { scriptEditor = new ReoScriptEditor() { Script = this.grid.Script, Srm = this.grid.Srm, }; } // run init script this.grid.RunScript(); // show script editor window if (!scriptEditor.Visible) { scriptEditor.Show(); } } } #endif } } private void NewFile() { if (!CloseDocument()) { return; } this.grid.Reset(); this.Text = LangResource.Untitled " - ReoGrid Editor " this.ProductVersion; //showGridLinesToolStripMenuItem.Checked = workbook.HasSettings(ReoGridSettings.View_ShowGridLine); this.CurrentFilePath = null; this.currentTempFilePath = null; #if DEBUG // for test case //showDebugFormToolStripButton.PerformClick(); ForTest(); #endif } private void SaveFile(string path) { #if EX_SCRIPT if (scriptEditor != null && scriptEditor.Visible) { this.grid.Script = scriptEditor.Script; } #endif // EX_SCRIPT //, "ReoGridEditor " this.ProductVersion.ToString()) FileFormat fm = FileFormat._Auto; if (path.EndsWith(".xlsx", StringComparison.CurrentCultureIgnoreCase)) { fm = FileFormat.Excel2007; } else if (path.EndsWith(".rgf", StringComparison.CurrentCultureIgnoreCase)) { fm = FileFormat.ReoGridFormat; } else if (path.EndsWith(".csv", StringComparison.CurrentCultureIgnoreCase)) { fm = FileFormat.CSV; } try { this.grid.Save(path, fm); this.SetCurrentDocumentFile(path); #if DEBUG Process.Start(path); #endif } catch (Exception ex) { MessageBox.Show(this, "Save error: " ex.Message, "Save Workbook", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } private void SetCurrentDocumentFile(string filepath) { this.Text = System.IO.Path.GetFileName(filepath) " - ReoGrid Editor " this.ProductVersion; this.CurrentFilePath = filepath; this.currentTempFilePath = null; } private void newToolStripButton_Click(object sender, EventArgs e) { NewFile(); } private void loadToolStripButton_Click(object sender, EventArgs e) { using (OpenFileDialog ofd = new OpenFileDialog()) { ofd.Filter = LangResource.Filter_Load_File; if (ofd.ShowDialog(this) == DialogResult.OK) { LoadFile(ofd.FileName); this.SetCurrentDocumentFile(ofd.FileName); } } } /// <summary> /// Save current document /// </summary> public void SaveDocument() { if (string.IsNullOrEmpty(CurrentFilePath)) { SaveAsDocument(); } else { SaveFile(this.CurrentFilePath); } } /// <summary> /// Save current document by specifying new file path /// </summary> /// <returns>true if operation is successful, otherwise false</returns> public bool SaveAsDocument() { using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Filter = LangResource.Filter_Save_File; if (!string.IsNullOrEmpty(this.CurrentFilePath)) { sfd.FileName = Path.GetFileNameWithoutExtension(this.CurrentFilePath); var format = GetFormatByExtension(this.CurrentFilePath); switch (format) { case FileFormat.Excel2007: sfd.FilterIndex = 1; break; case FileFormat.ReoGridFormat: sfd.FilterIndex = 2; break; case FileFormat.CSV: sfd.FilterIndex = 3; break; } } if (sfd.ShowDialog(this) == DialogResult.OK) { SaveFile(sfd.FileName); return true; } } return false; } /// <summary> /// Event raised when document has been reset to initial /// </summary> public bool NewDocumentOnLoad { get; set; } protected override void OnLoad(EventArgs e) { base.OnLoad(e); #if DEBUG // hold control key when quit to save current worksheet automatically if (Toolkit.IsKeyDown(unvell.Common.Win32Lib.Win32.VKey.VK_CONTROL)) { FileInfo file = new FileInfo("..\\..\\autosave.sgf"); if (file.Exists) LoadFile(file.FullName); } #endif // load file if specified if (!string.IsNullOrEmpty(CurrentFilePath)) { this.grid.Reset(); LoadFile(CurrentFilePath); } else if (NewDocumentOnLoad) { NewFile(); } #if EX_SCRIPT if (!string.IsNullOrEmpty(this.grid.Script) && (scriptEditor == null || !scriptEditor.Visible || scriptEditor.IsDisposed)) { scriptEditorToolStripMenuItem.PerformClick(); } #endif // EX_SCRIPT UpdateSelectionModeAndStyle(); UpdateSelectionForwardDirection(); grid.Focus(); } protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); #if DEBUG // Uncomment out the code below to allow autosave. // Only RGF(ReoGrid Format, *.rgf) is supported. // this.CurrentWorksheet.Save("..\\..\\autosave.rgf"); #endif // DEBUG } private void newToolStripMenuItem_Click(object sender, EventArgs e) { newToolStripButton.PerformClick(); } private void openToolStripMenuItem_Click(object sender, EventArgs e) { loadToolStripButton.PerformClick(); } public bool CloseDocument() { if (this.grid.IsWorkbookEmpty) { return true; } var dr = MessageBox.Show(LangResource.Msg_Save_Changes, "ReoGrid Editor", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (dr == System.Windows.Forms.DialogResult.No) return true; else if (dr == System.Windows.Forms.DialogResult.Cancel) return false; FileFormat format = FileFormat._Auto; if (!string.IsNullOrEmpty(this.CurrentFilePath)) { format = GetFormatByExtension(this.CurrentFilePath); } if (format == FileFormat._Auto || string.IsNullOrEmpty(this.CurrentFilePath)) { return SaveAsDocument(); } else { SaveDocument(); } return true; } private FileFormat GetFormatByExtension(string path) { if (string.IsNullOrEmpty(path)) { return FileFormat._Auto; } string ext = Path.GetExtension(this.CurrentFilePath); if (ext.Equals(".rgf", StringComparison.CurrentCultureIgnoreCase) || ext.Equals(".xml", StringComparison.CurrentCultureIgnoreCase)) { return FileFormat.ReoGridFormat; } else if (ext.Equals(".xlsx", StringComparison.CurrentCultureIgnoreCase)) { return FileFormat.Excel2007; } else if (ext.Equals(".csv", StringComparison.CurrentCultureIgnoreCase)) { return FileFormat.CSV; } else { return FileFormat._Auto; } } #endregion #region Alignment private void textLeftToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.HorizontalAlign, HAlign = ReoGridHorAlign.Left, })); } private void textCenterToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.HorizontalAlign, HAlign = ReoGridHorAlign.Center, })); } private void textRightToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.HorizontalAlign, HAlign = ReoGridHorAlign.Right, })); } private void distributedIndentToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.HorizontalAlign, HAlign = ReoGridHorAlign.DistributedIndent, })); } private void textAlignTopToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.VerticalAlign, VAlign = ReoGridVerAlign.Top, })); } private void textAlignMiddleToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.VerticalAlign, VAlign = ReoGridVerAlign.Middle, })); } private void textAlignBottomToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.VerticalAlign, VAlign = ReoGridVerAlign.Bottom, })); } #endregion #region Border Settings #region Outside Borders private void SetSelectionBorder(BorderPositions borderPos, BorderLineStyle style) { this.grid.DoAction(new SetRangeBorderAction(this.CurrentWorksheet.SelectionRange, borderPos, new RangeBorderStyle { Color = borderColorPickToolStripItem.SolidColor, Style = style })); } private void boldOutlineToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Outside, BorderLineStyle.BoldSolid); } private void dottedOutlineToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Outside, BorderLineStyle.Dotted); } private void boundsSolidToolStripButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Outside, BorderLineStyle.Solid); } private void solidOutlineToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Outside, BorderLineStyle.Solid); } private void dashedOutlineToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Outside, BorderLineStyle.Dashed); } #endregion // Outside Borders #region Inside Borders private void insideSolidToolStripSplitButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.InsideAll, BorderLineStyle.Solid); } private void insideSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.InsideAll, BorderLineStyle.Solid); } private void insideBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.InsideAll, BorderLineStyle.BoldSolid); } private void insideDottedToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.InsideAll, BorderLineStyle.Dotted); } private void insideDashedToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.InsideAll, BorderLineStyle.Dashed); } #endregion // Inside Borders #region Left & Right Borders private void leftRightSolidToolStripSplitButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.LeftRight, BorderLineStyle.Solid); } private void leftRightSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.LeftRight, BorderLineStyle.Solid); } private void leftRightBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.LeftRight, BorderLineStyle.BoldSolid); } private void leftRightDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.LeftRight, BorderLineStyle.Dotted); } private void leftRightDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.LeftRight, BorderLineStyle.Dashed); } #endregion // Left & Right Borders #region Top & Bottom Borders private void topBottomSolidToolStripSplitButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.TopBottom, BorderLineStyle.Solid); } private void topBottomSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.TopBottom, BorderLineStyle.Solid); } private void topBottomBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.TopBottom, BorderLineStyle.BoldSolid); } private void topBottomDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.TopBottom, BorderLineStyle.Dotted); } private void topBottomDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.TopBottom, BorderLineStyle.Dashed); } #endregion // Top & Bottom Borders #region All Borders private void allSolidToolStripSplitButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.All, BorderLineStyle.Solid); } private void allSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.All, BorderLineStyle.Solid); } private void allBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.All, BorderLineStyle.BoldSolid); } private void allDottedToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.All, BorderLineStyle.Dotted); } private void allDashedToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.All, BorderLineStyle.Dashed); } #endregion // All Borders #region Left Border private void leftSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Left, BorderLineStyle.Solid); } private void leftSolidToolStripButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Left, BorderLineStyle.Solid); } private void leftBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Left, BorderLineStyle.BoldSolid); } private void leftDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Left, BorderLineStyle.Dotted); } private void leftDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Left, BorderLineStyle.Dashed); } #endregion // Left Border #region Top Border private void topSolidToolStripButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Top, BorderLineStyle.Solid); } private void topSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Top, BorderLineStyle.Solid); } private void topBlodToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Top, BorderLineStyle.BoldSolid); } private void topDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Top, BorderLineStyle.Dotted); } private void topDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Top, BorderLineStyle.Dashed); } #endregion // Top Border #region Bottom Border private void bottomToolStripButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Bottom, BorderLineStyle.Solid); } private void bottomSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Bottom, BorderLineStyle.Solid); } private void bottomBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Bottom, BorderLineStyle.BoldSolid); } private void bottomDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Bottom, BorderLineStyle.Dotted); } private void bottomDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Bottom, BorderLineStyle.Dashed); } #endregion // Bottom Border #region Right Border private void rightSolidToolStripButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Right, BorderLineStyle.Solid); } private void rightSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Right, BorderLineStyle.Solid); } private void rightBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Right, BorderLineStyle.BoldSolid); } private void rightDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Right, BorderLineStyle.Dotted); } private void rightDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Right, BorderLineStyle.Dashed); } #endregion // Right Border #region Slash private void slashRightSolidToolStripButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Slash, BorderLineStyle.Solid); } private void slashRightSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Slash, BorderLineStyle.Solid); } private void slashRightBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Slash, BorderLineStyle.BoldSolid); } private void slashRightDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Slash, BorderLineStyle.Dotted); } private void slashRightDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Slash, BorderLineStyle.Dashed); } #endregion // Slash #region Backslash private void slashLeftSolidToolStripButton_ButtonClick(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Backslash, BorderLineStyle.Solid); } private void slashLeftSolidToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Backslash, BorderLineStyle.Solid); } private void slashLeftBoldToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Backslash, BorderLineStyle.BoldSolid); } private void slashLeftDotToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Backslash, BorderLineStyle.Dotted); } private void slashLeftDashToolStripMenuItem_Click(object sender, EventArgs e) { SetSelectionBorder(BorderPositions.Backslash, BorderLineStyle.Dashed); } #endregion // Backslash #region Clear Borders private void clearBordersToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeBorderAction(this.CurrentWorksheet.SelectionRange, BorderPositions.All, new RangeBorderStyle { Color = Color.Empty, Style = BorderLineStyle.None })); } #endregion // Clear Borders #endregion // Border Settings #region Style private void backColorPickerToolStripButton_ColorPicked(object sender, EventArgs e) { //Color c = backColorPickerToolStripButton.SolidColor; //if (c.IsEmpty) //{ // workbook.DoAction(new SGRemoveRangeStyleAction(workbook.SelectionRange, PlainStyleFlag.FillColor)); //} //else //{ this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle() { Flag = PlainStyleFlag.BackColor, BackColor = backColorPickerToolStripButton.SolidColor, })); //} } private void textColorPickToolStripItem_ColorPicked(object sender, EventArgs e) { var color = textColorPickToolStripItem.SolidColor; if (color.IsEmpty) { this.grid.DoAction(new RemoveRangeStyleAction(this.CurrentWorksheet.SelectionRange, PlainStyleFlag.TextColor)); } else { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.TextColor, TextColor = color, })); } } private void boldToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.FontStyleBold, Bold = boldToolStripButton.Checked, })); } private void italicToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.FontStyleItalic, Italic = italicToolStripButton.Checked, })); } private void underlineToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.FontStyleUnderline, Underline = underlineToolStripButton.Checked, })); } private void strikethroughToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.FontStyleStrikethrough, Strikethrough = strikethroughToolStripButton.Checked, })); } private void styleBrushToolStripButton_Click(object sender, EventArgs e) { this.CurrentWorksheet.StartPickRangeAndCopyStyle(); } private void enlargeFontToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new StepRangeFontSizeAction(this.CurrentWorksheet.SelectionRange, true)); UpdateMenuAndToolStrips(); } private void fontSmallerToolStripButton_Click(object sender, EventArgs e) { this.grid.DoAction(new StepRangeFontSizeAction(this.CurrentWorksheet.SelectionRange, false)); UpdateMenuAndToolStrips(); } private void fontToolStripComboBox_SelectedIndexChanged(object sender, EventArgs e) { if (isUIUpdating) return; this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.FontName, FontName = fontToolStripComboBox.Text, })); } private void fontSizeToolStripComboBox_TextChanged(object sender, EventArgs e) { SetGridFontSize(); } private void SetGridFontSize() { if (isUIUpdating) return; float size = 9; float.TryParse(fontSizeToolStripComboBox.Text, out size); if (size <= 0) size = 1f; this.grid.DoAction(new SetRangeStyleAction(this.CurrentWorksheet.SelectionRange, new WorksheetRangeStyle { Flag = PlainStyleFlag.FontSize, FontSize = size, })); } #endregion #region Cell & Range private void MergeSelectionRange(object sender, EventArgs e) { try { this.grid.DoAction(new MergeRangeAction(this.CurrentWorksheet.SelectionRange)); } catch (RangeTooSmallException) { } catch (RangeIntersectionException) { MessageBox.Show(LangResource.Msg_Range_Intersection_Exception, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void UnmergeSelectionRange(object sender, EventArgs e) { this.grid.DoAction(new UnmergeRangeAction(this.CurrentWorksheet.SelectionRange)); } void resizeToolStripMenuItem_Click(object sender, EventArgs e) { var worksheet = this.CurrentWorksheet; using (var rgf = new ResizeGridDialog()) { rgf.Rows = worksheet.RowCount; rgf.Cols = worksheet.ColumnCount; if (rgf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { WorksheetActionGroup ag = new WorksheetActionGroup(); if (rgf.Rows < worksheet.RowCount) { ag.Actions.Add(new RemoveRowsAction(rgf.Rows, worksheet.RowCount - rgf.Rows)); } else if (rgf.Rows > worksheet.RowCount) { ag.Actions.Add(new InsertRowsAction(worksheet.RowCount, rgf.Rows - worksheet.RowCount)); } if (rgf.Cols < worksheet.ColumnCount) { ag.Actions.Add(new RemoveColumnsAction(rgf.Cols, worksheet.ColumnCount - rgf.Cols)); } else if (rgf.Cols > worksheet.ColumnCount) { ag.Actions.Add(new InsertColumnsAction(worksheet.ColumnCount, rgf.Cols - worksheet.ColumnCount)); } if (ag.Actions.Count > 0) { Cursor = Cursors.WaitCursor; try { this.grid.DoAction(ag); } finally { Cursor = Cursors.Default; } } } } } void ApplyFunctionToSelectedRange(string funName) { var sheet = this.CurrentWorksheet; var range = this.CurrentSelectionRange; // fill bottom rows if (range.Rows > 1) { for (int c = range.Col; c <= range.EndCol; c ) { var cell = sheet.Cells[range.EndRow, c]; if (string.IsNullOrEmpty(cell.DisplayText)) { cell.Formula = string.Format("{0}({1})", funName, RangePosition.FromCellPosition(range.Row, range.Col, range.EndRow - 1, c).ToAddress()); break; } } } // fill right columns if (range.Cols > 1) { for (int r = range.Row; r <= range.EndRow; r ) { var cell = sheet.Cells[r, range.EndCol]; if (string.IsNullOrEmpty(cell.DisplayText)) { cell.Formula = string.Format("{0}({1})", funName, RangePosition.FromCellPosition(range.Row, range.Col, r, range.EndCol - 1).ToAddress()); break; } } } } #endregion #region Context Menu private void insertColToolStripMenuItem_Click(object sender, EventArgs e) { if (this.CurrentSelectionRange.Cols >= 1) { this.grid.DoAction(new InsertColumnsAction(CurrentSelectionRange.Col, CurrentSelectionRange.Cols)); } } private void insertRowToolStripMenuItem_Click(object sender, EventArgs e) { if (this.CurrentSelectionRange.Rows >= 1) { this.grid.DoAction(new InsertRowsAction(CurrentSelectionRange.Row, CurrentSelectionRange.Rows)); } } private void deleteColumnToolStripMenuItem_Click(object sender, EventArgs e) { if (this.CurrentSelectionRange.Cols >= 1) { this.grid.DoAction(new RemoveColumnsAction(CurrentSelectionRange.Col, CurrentSelectionRange.Cols)); } } private void deleteRowsToolStripMenuItem_Click(object sender, EventArgs e) { if (this.CurrentSelectionRange.Rows >= 1) { this.grid.DoAction(new RemoveRowsAction(CurrentSelectionRange.Row, CurrentSelectionRange.Rows)); } } private void resetToDefaultWidthToolStripMenuItem_Click(object sender, EventArgs e) { this.grid.DoAction(new SetColumnsWidthAction(CurrentSelectionRange.Col, CurrentSelectionRange.Cols, Worksheet.InitDefaultColumnWidth)); } private void resetToDefaultHeightToolStripMenuItem_Click(object sender, EventArgs e) { this.grid.DoAction(new SetRowsHeightAction(CurrentSelectionRange.Row, CurrentSelectionRange.Rows, Worksheet.InitDefaultRowHeight)); } #endregion #region Debug Form #if DEBUG private DebugForm cellDebugForm = null; private DebugForm borderDebugForm = null; private void showDebugFormToolStripButton_Click(object sender, EventArgs e) { if (cellDebugForm == null) { cellDebugForm = new DebugForm(); cellDebugForm.VisibleChanged = (ss, se) => showDebugFormToolStripButton.Checked = cellDebugForm.Visible; } else if (cellDebugForm.Visible) { cellDebugForm.Visible = false; borderDebugForm.Visible = false; return; } cellDebugForm.Grid = this.CurrentWorksheet; if (!cellDebugForm.Visible) { cellDebugForm.InitTabType = DebugForm.InitTab.Grid; cellDebugForm.Show(this); } if (borderDebugForm == null) { borderDebugForm = new DebugForm(); borderDebugForm.Grid = this.CurrentWorksheet; } if (!borderDebugForm.Visible) { borderDebugForm.InitTabType = DebugForm.InitTab.Border; borderDebugForm.Show(this); } if (cellDebugForm.Visible || borderDebugForm.Visible) ResetDebugFormLocation(); } #endif // DEBUG protected override void OnShown(EventArgs e) { base.OnShown(e); } protected override void OnMove(EventArgs e) { base.OnMove(e); #if DEBUG ResetDebugFormLocation(); #endif // DEBUG } #if DEBUG private void ResetDebugFormLocation() { if (cellDebugForm != null && cellDebugForm.Visible) { cellDebugForm.Location = new Point(this.Right, this.Top); } if (borderDebugForm != null && borderDebugForm.Visible) { borderDebugForm.Location = new Point(cellDebugForm.Left, cellDebugForm.Bottom); } } #endif // DEBUG #endregion // Debug Form #region Editing private void cutRangeToolStripMenuItem_Click(object sender, EventArgs e) { Cut(); } private void copyRangeToolStripMenuItem_Click(object sender, EventArgs e) { Copy(); } private void pasteRangeToolStripMenuItem_Click(object sender, EventArgs e) { Paste(); } private void Cut() { // Cut method will always perform action to do cut try { this.CurrentWorksheet.Cut(); } catch (RangeIntersectionException) { MessageBox.Show(LangResource.Msg_Range_Intersection_Exception); } catch { MessageBox.Show(LangResource.Msg_Operation_Aborted); } } private void Copy() { try { this.CurrentWorksheet.Copy(); } catch (RangeIntersectionException) { MessageBox.Show(LangResource.Msg_Range_Intersection_Exception); } catch { MessageBox.Show(LangResource.Msg_Operation_Aborted); } } private void Paste() { try { this.CurrentWorksheet.Paste(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void cutToolStripMenuItem_Click(object sender, EventArgs e) { cutToolStripButton.PerformClick(); } private void copyToolStripMenuItem_Click(object sender, EventArgs e) { copyToolStripButton.PerformClick(); } private void pasteToolStripMenuItem_Click(object sender, EventArgs e) { pasteToolStripButton.PerformClick(); } private void repeatLastActionToolStripMenuItem_Click(object sender, EventArgs e) { this.grid.RepeatLastAction(this.CurrentWorksheet.SelectionRange); } private void selectAllToolStripMenuItem_Click(object sender, EventArgs e) { this.CurrentWorksheet.SelectAll(); } #endregion // Editing #region Window private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Close(); } private void newWindowToolStripMenuItem_Click(object sender, EventArgs e) { new ReoGridEditor().Show(); } private void styleEditorToolStripMenuItem_Click(object sender, EventArgs e) { ControlAppearanceEditorForm styleEditor = new ControlAppearanceEditorForm(); styleEditor.Grid = this.grid; styleEditor.Show(this); } #endregion // Window #region View & Print private void formatCellToolStripMenuItem_Click(object sender, EventArgs e) { using (PropertyForm form = new PropertyForm(this.grid)) { form.ShowDialog(this); } } private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e) { printPreviewToolStripButton.PerformClick(); } private void printPreviewToolStripButton_Click(object sender, EventArgs e) { try { this.grid.CurrentWorksheet.AutoSplitPage(); this.grid.CurrentWorksheet.EnableSettings(WorksheetSettings.View_ShowPageBreaks); } catch (Exception ex) { MessageBox.Show(this, ex.Message, Application.ProductName " " Application.ProductVersion, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } using (var session = this.grid.CurrentWorksheet.CreatePrintSession()) { using (PrintPreviewDialog ppd = new PrintPreviewDialog()) { ppd.Document = session.PrintDocument; ppd.SetBounds(200, 200, 1024, 768); ppd.PrintPreviewControl.Zoom = 1d; ppd.ShowDialog(this); } } } private void PrintToolStripMenuItem_Click(object sender, EventArgs e) { PrintSession session = null; try { session = grid.CurrentWorksheet.CreatePrintSession(); } catch (Exception ex) { MessageBox.Show(this, ex.Message, this.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } using (var pd = new System.Windows.Forms.PrintDialog()) { pd.Document = session.PrintDocument; pd.UseEXDialog = true; if (pd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { session.Print(); } } if (session != null) session.Dispose(); } void removeRowPageBreakToolStripMenuItem_Click(object sender, EventArgs e) { this.grid.CurrentWorksheet.RemoveRowPageBreak(this.grid.CurrentWorksheet.FocusPos.Row); } void printSettingsToolStripMenuItem_Click(object sender, EventArgs e) { using (PrintSettingsDialog psf = new PrintSettingsDialog()) { var sheet = this.grid.CurrentWorksheet; if (sheet.PrintSettings == null) { sheet.PrintSettings = new PrintSettings(); } psf.PrintSettings = (PrintSettings)sheet.PrintSettings.Clone(); if (psf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { sheet.PrintSettings = psf.PrintSettings; sheet.AutoSplitPage(); sheet.EnableSettings(WorksheetSettings.View_ShowPageBreaks); } } } void removeColPageBreakToolStripMenuItem_Click(object sender, EventArgs e) { try { this.grid.CurrentWorksheet.RemoveColumnPageBreak(this.grid.CurrentWorksheet.FocusPos.Col); } catch (Exception ex) { MessageBox.Show(ex.Message); } } void insertRowPageBreakToolStripMenuItem_Click(object sender, EventArgs e) { try { this.CurrentWorksheet.RowPageBreaks.Add(this.CurrentWorksheet.FocusPos.Row); } catch (Exception ex) { MessageBox.Show(ex.Message); } } void insertColPageBreakToolStripMenuItem_Click(object sender, EventArgs e) { this.CurrentWorksheet.ColumnPageBreaks.Add(this.CurrentWorksheet.FocusPos.Col); } #endregion // View & Print #region Freeze private void FreezeToEdge(FreezeArea freezePos) { var worksheet = this.CurrentWorksheet; if (!worksheet.SelectionRange.IsEmpty) { worksheet.FreezeToCell(worksheet.FocusPos, freezePos); UpdateMenuAndToolStrips(); } } private void unfreezeToolStripMenuItem_Click(object sender, EventArgs e) { this.CurrentWorksheet.Unfreeze(); UpdateMenuAndToolStrips(); } #endregion // Freeze #region Help private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { new AboutForm().ShowDialog(this); } #endregion #region Outline void groupRowsToolStripMenuItem_Click(object sender, EventArgs e) { try { this.grid.DoAction(new AddOutlineAction(RowOrColumn.Row, this.CurrentSelectionRange.Row, this.CurrentSelectionRange.Rows)); } catch (OutlineOutOfRangeException) { MessageBox.Show(LangResource.Msg_Outline_Out_Of_Range); } catch (OutlineAlreadyDefinedException) { MessageBox.Show(LangResource.Msg_Outline_Already_Exist); } catch (OutlineIntersectedException) { MessageBox.Show(LangResource.Msg_Outline_Intersected); } catch (OutlineTooMuchException) { MessageBox.Show(LangResource.Msg_Outline_Too_Much); } } void ungroupRowsToolStripMenuItem_Click(object sender, EventArgs e) { var removeOutlineAction = new RemoveOutlineAction(RowOrColumn.Row, this.CurrentSelectionRange.Row, this.CurrentSelectionRange.Rows); try { this.grid.DoAction(removeOutlineAction); } catch { } if (removeOutlineAction.RemovedOutline == null) { MessageBox.Show(LangResource.Msg_Outline_Not_Found); } } void groupColumnsToolStripMenuItem_Click(object sender, EventArgs e) { var worksheet = this.CurrentWorksheet; try { this.grid.DoAction(new AddOutlineAction(RowOrColumn.Column, this.CurrentSelectionRange.Col, this.CurrentSelectionRange.Cols)); } catch (OutlineOutOfRangeException) { MessageBox.Show(LangResource.Msg_Outline_Out_Of_Range); } catch (OutlineAlreadyDefinedException) { MessageBox.Show(LangResource.Msg_Outline_Already_Exist); } catch (OutlineIntersectedException) { MessageBox.Show(LangResource.Msg_Outline_Intersected); } catch (OutlineTooMuchException) { MessageBox.Show(LangResource.Msg_Outline_Too_Much); } } void ungroupColumnsToolStripMenuItem_Click(object sender, EventArgs e) { var removeOutlineAction = new RemoveOutlineAction(RowOrColumn.Column, this.CurrentSelectionRange.Col, this.CurrentSelectionRange.Cols); try { this.grid.DoAction(removeOutlineAction); } catch { } if (removeOutlineAction.RemovedOutline == null) { MessageBox.Show(LangResource.Msg_Outline_Not_Found); } } void ungroupAllRowsToolStripMenuItem_Click(object sender, EventArgs e) { this.grid.DoAction(new ClearOutlineAction(RowOrColumn.Row)); } void ungroupAllColumnsToolStripMenuItem_Click(object sender, EventArgs e) { this.grid.DoAction(new ClearOutlineAction(RowOrColumn.Column)); } #endregion // Outline #region Filter private AutoColumnFilter columnFilter; void filterToolStripMenuItem_Click(object sender, EventArgs e) { if (this.columnFilter != null) { this.columnFilter.Detach(); } CreateAutoFilterAction action = new CreateAutoFilterAction(this.CurrentWorksheet.SelectionRange); this.grid.DoAction(action); this.columnFilter = action.AutoColumnFilter; } void clearFilterToolStripMenuItem_Click(object sender, EventArgs e) { if (this.columnFilter != null) { columnFilter.Detach(); } } #endregion // Filter #if DEBUG private void ForTest() { var sheet = this.grid.CurrentWorksheet; } private void TestRTFUnderline(Worksheet sheet) { RichText rt = new RichText(); rt.Span("Hello group 日本語_ テスト", fontStyles: FontStyles.Underline); sheet["A1"] = rt; } private void TestIssue_7(Worksheet sheet) { var range = sheet.Ranges["B2:D5"]; // test code sheet.SetRangeStyles(range, new WorksheetRangeStyle { Flag = PlainStyleFlag.All, FontName = "Arial", Italic = false, Bold = true, Underline = false, FontSize = 30, TextWrapMode = TextWrapMode.NoWrap, HAlign = ReoGridHorAlign.Left, VAlign = ReoGridVerAlign.Middle, TextColor = SolidColor.Black, BackColor = SolidColor.Transparent }); this.grid.Save("test.xlsx"); } private void TestAddRectangle(Worksheet sheet) { var rectObj = new Drawing.Shapes.RectangleShape() { // set the location of rectangle Location = new Graphics.Point(50, 50), // set the size of rectangle Size = new Graphics.Size(200, 100), }; // adding rectangle on worksheet sheet.FloatingObjects.Add(rectObj); } private void btn_SetRowAndColCount_Click(object sender, EventArgs e) { try { this.CurrentWorksheet.SetCols(System.Convert.ToInt32(tb_ColCount.Text)); this.CurrentWorksheet.SetRows(System.Convert.ToInt32(tb_RowCount.Text)); } catch { } } #endif // DEBUG } }
标签: 控件
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)