Beispiel #1
0
        /// <summary> 窗体键盘按下事件<para />
        /// 1、移动选中元素
        /// </summary>
        private void frmMain_KeyDown(object sender, KeyEventArgs e)
        {
            _isctrl  = e.Control;
            _isshift = e.Shift;
            //键盘移动绘制元素位移量
            Size offset = Size.Empty;

            /* 判断按键为前头和Delete
             */
            if ((37 <= e.KeyValue && 40 >= e.KeyValue) ||
                46 == e.KeyValue)
            {
                if (!_ischange)
                {
                    _ischange = true;
                }
            }
            else
            {
                e.Handled = true;
                return;
            }

            if (_wa.IsSelectElement)
            {
                switch (e.KeyValue)
                {
                default: { break; }

                case 37:    //←
                {
                    offset = new Size(-_wa.GridWidth, 0);
                    _wa.MoveElementTo(offset, new Object[] { _isctrl, _isshift });
                    break;
                }

                case 38:    //↑
                {
                    offset = new Size(0, -_wa.GridHeight);
                    _wa.MoveElementTo(offset, new Object[] { _isctrl, _isshift });
                    break;
                }

                case 39:    //→
                {
                    offset = new Size(_wa.GridWidth, 0);
                    _wa.MoveElementTo(offset, new Object[] { _isctrl, _isshift });
                    break;
                }

                case 40:    //↓
                {
                    offset = new Size(0, _wa.GridHeight);
                    _wa.MoveElementTo(offset, new Object[] { _isctrl, _isshift });
                    break;
                }

                case 46:    //Delete
                {
                    _wa.DeleteElement();
                    break;
                }
                }
                _wa.RecordHistory();
                picWorkArea.Invalidate();
            }
        }