예제 #1
0
 /// <summary>
 /// オートフォーカスを行う。
 /// </summary>
 private void autoFocus()
 {
     if (this.AutoFocus && this.Focused && this.CanAutoFocus())
     {
         ControlExtensions.MoveNextControl(this);
     }
 }
예제 #2
0
파일: MetForm.cs 프로젝트: taka8835/Metroit
        /// <summary>
        /// Enterキー、ESCキーの制御を行います。
        /// </summary>
        /// <param name="msg">Messageオブジェクト</param>
        /// <param name="keyData">Keysオブジェクト</param>
        /// <returns>true:以降のイベントハンドラを制御しない, false:以降のイベントハンドラを制御する</returns>
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            // Enter
            if (EnterFocus && (keyData == Keys.Return || keyData == (Keys.Shift | Keys.Return)))
            {
                // 対象がボタンの時は通常制御とする
                if (this.ActiveControl is Button)
                {
                    return(base.ProcessCmdKey(ref msg, keyData));
                }
                ControlExtensions.MoveNextControl(this);
                return(true);
            }

            // ESC
            if (keyData == Keys.Escape)
            {
                var rollback     = GetControlRollbackObject();
                var isRollbacked = IsRollbacked(rollback);

                // ControlRollback
                if (this.IsRollbackControl(rollback, isRollbacked))
                {
                    var e = new CancelEventArgs();
                    this.OnControlRollbacking(e);
                    if (e.Cancel)
                    {
                        return(false);
                    }
                    rollback.Rollback(this, this.ActiveControl);
                    return(true);
                }

                // ControlLeave
                if (this.IsLeaveControl(isRollbacked))
                {
                    var e = new CancelEventArgs();
                    this.OnControlLeaving(e);
                    if (e.Cancel)
                    {
                        return(false);
                    }
                    this.LeaveControl();
                    return(true);
                }

                // FormClose
                if (this.CloseForm())
                {
                    return(true);
                }
            }

            return(base.ProcessCmdKey(ref msg, keyData));
        }
예제 #3
0
파일: MetForm.cs 프로젝트: windygu/Metroit
        /// <summary>
        /// Enterキー、ESCキーの制御を行います。
        /// </summary>
        /// <param name="msg">Messageオブジェクト</param>
        /// <param name="keyData">Keysオブジェクト</param>
        /// <returns>true:以降のイベントハンドラを制御しない, false:以降のイベントハンドラを制御する</returns>
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            // Enter
            if (EnterFocus && keyData == Keys.Return)
            {
                // 対象がボタンの時は通常制御とする
                if (this.ActiveControl is Button)
                {
                    return(base.ProcessCmdKey(ref msg, keyData));
                }
                ControlExtensions.MoveNextControl(this);
                return(true);
            }

            // ESC
            if (keyData == Keys.Escape)
            {
                var rollback     = GetLeaveRollbackObject();
                var isRollbacked = IsRollbacked(rollback);

                // ControlRollback
                if (this.RollbackControl(rollback, isRollbacked))
                {
                    return(true);
                }

                // ControlLeave
                if (this.LeaveControl(isRollbacked))
                {
                    return(true);
                }

                // FormClose
                if (this.CloseForm())
                {
                    return(true);
                }
            }

            return(base.ProcessCmdKey(ref msg, keyData));
        }