protected override void OnKeyDown(KeyEventArgs e) { bool runTests = false; if (runTests) { if (e.KeyData == Keys.T) { // Let's run some style tests. GridStyleInfo style = new GridStyleInfo(); MessageBox.Show(style.ToString("d"), "Empty Style"); MessageBox.Show(GridStyleInfo.Default.ToString(), "GridStyleInfo.Default.ToString()"); MessageBox.Show(Model.TableStyle.ToString(), "TableStyle.ToString()"); MessageBox.Show(Model.TableStyle.ToString("d"), "TableStyle.ToString(\"d\")"); MessageBox.Show(Model[1, 1].ToString(), "Model[1, 1].ToString()"); MessageBox.Show(Model[1, 1].ToString("d"), "Model[1, 1].ToString(\"d\")"); MessageBox.Show(Model.RowStyles[1].ToString(), "RowStyles[1].ToString()"); MessageBox.Show(Model.RowStyles[1].ToString("d"), "RowStyles[1].ToString(\"d\")"); string t = Model.TableStyle.ToString(); GridStyleInfo parseStyle = new GridStyleInfo(); parseStyle.ParseString(t); MessageBox.Show(parseStyle.ToString(), "parseStyle.ToString()"); } if (e.KeyData == Keys.F1) { // TODO: hangs when you change base style in property grid. StyleInfoForm form = new StyleInfoForm(Model.ColStyles[1]); form.ShowDialog(); Refresh(); } if (e.KeyData == Keys.F3) { CurrentCell.MoveTo(5, 4, GridSetCurrentCellOptions.SetFocus); return; } if (e.KeyData == Keys.F4) { // TODO: hangs when you change base style in property grid. StyleInfoForm form = new StyleInfoForm(Model[0, 0]); form.ShowDialog(); Refresh(); } if (e.KeyData == Keys.F5) { Model.Selections.Clear(); } if (e.KeyData == Keys.F6) { Model.Selections.Add(GridRangeInfo.Cells(2, 2, 10, 4)); } #if !NETCORE if (e.KeyData == Keys.M) { // TODO: Show Default value for base style in property grid GridBaseStyleCollectionEditor ce = new GridBaseStyleCollectionEditor(typeof(GridBaseStylesMap)); WindowsFormsEditorServiceContainer esc = new WindowsFormsEditorServiceContainer(null); PropertyDescriptor pd = TypeDescriptor.GetProperties(Model)["GridBaseStylesMap"]; TypeDescriptorContext tdc = new TypeDescriptorContext(Model, pd); tdc.ServiceProvider = esc; object v = ce.EditValue(tdc, esc, Model.BaseStylesMap.Clone()); if (esc.DialogResult == DialogResult.OK) { Model.BaseStylesMap = (GridBaseStylesMap)v; } } #endif } base.OnKeyDown(e); }
/// <summary> /// Displays a collection editor dialog for editing NamedRanges. /// </summary> /// <param name="engine">The GridFormulaEngine instance whose NamedRanges are being edited.</param> public static void ShowNamedRangesDialog(GridFormulaEngine engine) { GridFormulaNamedRangesEditerHelper editHelper = new GridFormulaNamedRangesEditerHelper(engine); CollectionEditor editor1 = new CollectionEditor(typeof(NamedRangeList)); WindowsFormsEditorServiceContainer esc = new WindowsFormsEditorServiceContainer(null); ////Subscribe to the event to change Dialog settings. esc.ShowingDialog += new ControlEventHandler(ServiceContainerShowingDialog); PropertyDescriptor pd = TypeDescriptor.GetProperties(editHelper)["List"]; TypeDescriptorContext tdc = new TypeDescriptorContext(editHelper, pd); tdc.ServiceProvider = esc; GridFormulaNamedRangesEditerHelper.NamedRangeList oldList = pd.GetValue(editHelper) as GridFormulaNamedRangesEditerHelper.NamedRangeList; GridFormulaNamedRangesEditerHelper.NamedRangeList newList = editor1.EditValue(tdc, esc, oldList) as GridFormulaNamedRangesEditerHelper.NamedRangeList; esc.ShowingDialog -= new ControlEventHandler(ServiceContainerShowingDialog); if (newList != null && esc.DialogResult == DialogResult.OK) { ArrayList needUpdating = new ArrayList(); ArrayList needDeleting = new ArrayList(); Hashtable namedRanges = (Hashtable)engine.NamedRanges.Clone(); List <string> lst = new List <string>(); foreach (string key in namedRanges.Keys) { lst.Add(key); } lst.Sort(); engine.NamedRanges.Clear(); engine.NamedRangesOriginalNames.Clear(); int i = 0; foreach (NamedRange range in newList) { string s = range.Key.ToUpper(CultureInfo.InvariantCulture); if (namedRanges.Contains(range.Key) && !string.IsNullOrEmpty(range.Key) && namedRanges[lst[i]].Equals(range.Value)) { engine.AddNamedRange(range.Key, range.Value); } else if (namedRanges.Contains(range.Key) && !string.IsNullOrEmpty(range.Key)) { engine.AddNamedRange(range.Key, namedRanges[lst[i]].ToString()); } else if (!namedRanges.Contains(range.Key) && !string.IsNullOrEmpty(range.Key) && !namedRanges.ContainsKey(range.Key)) { engine.AddNamedRange(range.Key, range.Value); } if (namedRanges.ContainsKey(s)) { if (namedRanges[s].Equals(range.Value)) { needUpdating.Add(s); } } i++; } foreach (string key in namedRanges.Keys) { if (!engine.NamedRanges.ContainsKey(key)) { needDeleting.Add(key); } } if (needDeleting.Count > 0 || needUpdating.Count > 0) { foreach (string s in needUpdating) { engine.UpdateDependentNamedRangeCell(s); ////Console.WriteLine("changed: " + s); } foreach (string s in needDeleting) { if (engine.NamedRanges.ContainsKey(s)) { engine.UpdateDependentNamedRangeCell(s); engine.RemoveNamedRangeDependency(s); ////Console.WriteLine("deleted: " + s); } } } engine.AdjustNameRangesForSize(); } }