示例#1
0
文件: YataPanels.cs 项目: kevL/yata
        /// <summary>
        /// Overrides the <c>MouseDown</c> handler on this
        /// <c>YataPanelFrozen</c>. Accepts or cancels an active edit.
        /// <list type="bullet">
        /// <item><c>LMB</c> - accept edit</item>
        /// <item><c>RMB</c> - cancel edit</item>
        /// <item><c>MMB</c> - accept or cancel based on
        /// <c><see cref="Settings._acceptedit">Settings._acceptedit</see></c></item>
        /// </list>
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseDown(MouseEventArgs e)
        {
#if Clicks
            logfile.Log("YataPanelFrozen.OnMouseDown() e.Button= " + e.Button);
#endif
            if (ModifierKeys == Keys.None)
            {
                if (_grid._editor.Visible)
                {
#if Clicks
                    logfile.Log(". _grid._editor.Visible");
#endif
                    switch (e.Button)
                    {
                    case MouseButtons.Left:                             // accept edit
#if Clicks
                        logfile.Log(". . accept edit");
#endif
                        _grid._bypassleaveditor = true;
                        _grid.editresultaccept();
                        break;

                    case MouseButtons.Right:                             // cancel edit
#if Clicks
                        logfile.Log(". . cancel edit");
#endif
                        _grid._bypassleaveditor = true;
                        _grid.editresultcancel(YataGrid.INVALID_GRID);
                        break;

                    default:
#if Clicks
                        logfile.Log(". . default edit result");
#endif
                        _grid._editor.Visible = false;                                 // do this or else the leave event fires twice.
                        break;
                    }
                }
                else
                {
                    Propanel propanel = _grid.Propanel;
                    if (propanel != null && propanel._editor.Visible)
                    {
#if Clicks
                        logfile.Log(". _grid.Propanel._editor.Visible");
#endif
                        switch (e.Button)
                        {
                        case MouseButtons.Left:                                 // accept edit
#if Clicks
                            logfile.Log(". . accept edit");
#endif
                            propanel._bypassleaveditor = true;
                            propanel.editresultaccept();
                            break;

                        case MouseButtons.Right:                                 // cancel edit
#if Clicks
                            logfile.Log(". . cancel edit");
#endif
                            propanel._bypassleaveditor = true;
                            propanel.editresultcancel();
                            break;

                        default:
#if Clicks
                            logfile.Log(". . default edit result");
#endif
                            propanel._editor.Visible = false;                                     // do this or else the leave event fires twice.
                            break;
                        }
                    }
                }
            }

            _grid.Select();
        }