按下tab和shift tab 跳不出Spread 11 ,14的解决方法

1、有表头,无数据(也就是数据是0件)的情况,需要增加以下代码。

        private void fpSpread1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Tab)
            {
                if (fpSpread1.ActiveSheet.ActiveRowIndex == fpSpread1.ActiveSheet.RowCount - 1 &&
                    fpSpread1.ActiveSheet.ActiveColumnIndex == -1)
                {
                    Control p;
                    p = ((FarPoint.Win.Spread.FpSpread)sender).Parent;
                    p.SelectNextControl(ActiveControl, true, true, true, true);
                }
            }
            else if (e.KeyData == (Keys.Tab | Keys.Shift))
            {
                if (fpSpread1.ActiveSheet.ActiveRowIndex == fpSpread1.ActiveSheet.RowCount - 1 &&
                    fpSpread1.ActiveSheet.ActiveColumnIndex == -1)
                {
                    Control p;
                    p = ((FarPoint.Win.Spread.FpSpread)sender).Parent;
                    p.SelectNextControl(ActiveControl, false, true, true, true);
                }
            }
        }

  

2、有表头,有数据。(需要增加输入映射)

  第一种方法:(画面实现)

         通过打开 Spread设计器 -> 设置 -> 输入映射(此时会打开 输入映射编辑器),将 tab和shift tab 的映射进行增加。

        tab:MoveToNextCellThenControl

        shift + tab:MoveToPreviousCellThenControl

第二种方法:(代码实现)

            InputMap im = this.GetInputMap(InputMapMode.WhenFocused);
            im.Put(new Keystroke(Keys.Tab, Keys.None), SpreadActions.MoveToNextCellThenControl);
            im.Put(new Keystroke(Keys.Tab, Keys.Shift), SpreadActions.MoveToPreviousCellThenControl);

  

原文地址:https://www.cnblogs.com/wzihan/p/14828198.html