Beispiel #1
0
        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();
            }
        }