找回密码
 立即注册

QQ登录

只需一步,快速开始

hbzck08

注册会员

6

主题

15

帖子

45

积分

注册会员

积分
45

活字格认证

最新发帖
hbzck08
注册会员   /  发表于:2016-6-30 19:08  /   查看:4554  /  回复:5
按回车键转到下一单元格,并展开已经绑定好的下拉菜单,选择好后,再按回车转到下一单元格。可否实现??

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-1 09:07:08
沙发
您好您希望回车 移动下一行可以通过绑定InputMap
            InputMap im = fpSpread1.GetInputMap(InputMapMode.WhenFocused);
            im.Put(new Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextRow);

combo 编辑模式自动展开可以设置
  1.         private void FpSpread1_EditModeOn(object sender, EventArgs e)
  2.         {
  3.             var a = fpSpread1.EditingControl;
  4.             if (fpSpread1.EditingControl is FpCombo)
  5.             {
  6.                 var comb = fpSpread1.EditingControl as FpCombo;
  7.                 comb.DroppedDown = true;
  8.             }
  9. }
复制代码
回复 使用道具 举报
hbzck08
注册会员   /  发表于:2016-7-14 16:25:42
板凳
按回车到下一单元格,编辑模式不触发啊。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-14 17:28:24
地板
hbzck08 发表于 2016-7-14 16:25
按回车到下一单元格,编辑模式不触发啊。

回车对于combo 就是展开选择,如果您不希望回车展开下拉可以设置 comb.ShowDropDownWhenEnter = false;
  1. private void FpSpread1_EditModeOn(object sender, EventArgs e)
  2.         {
  3.             var a = fpSpread1.EditingControl;
  4.             if (fpSpread1.EditingControl is FpCombo)
  5.             {
  6.                 var comb = fpSpread1.EditingControl as FpCombo;
  7.                 comb.DroppedDown = true;
  8.                 comb.KeyPress += Comb_KeyPress;
  9.                 comb.ShowDropDownWhenEnter = false;
  10.             }
  11.         }
  12.         private void Comb_KeyPress(object sender, KeyPressEventArgs e)
  13.         {
  14.             if (e.KeyChar == (char)Keys.Enter && !(sender as FpCombo).DroppedDown)
  15.             {
  16.                 fpSpread1.EditMode = false;
  17.             }
  18.         }

复制代码
回车下一行并自动展开需要实现 Aciton
  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.    InputMap im = fpSpread1.GetInputMap(InputMapMode.WhenFocused);
  4.             ActionMap am = fpSpread1.GetActionMap();
  5.             im.Put(new Keystroke(Keys.Enter, Keys.None), "MoveNextAndStartEditAction");
  6.             am.Put("MoveNextAndStartEditAction", new MoveNextAndStartEditAction());
  7. }
复制代码

  1. class MoveNextAndStartEditAction : FarPoint.Win.Spread.Action
  2.         {
  3.             public override void PerformAction(object source)
  4.             {
  5.                 if (source is SpreadView)
  6.                 {
  7.                     SpreadView spread = (SpreadView)source;
  8.                     SheetView sheet = spread.Sheets[spread.ActiveSheetIndex];
  9.                     ActionMap am = spread.GetActionMap();
  10.                     var nextAction = am.Get(SpreadActions.MoveToNextRow);
  11.                     if (nextAction != null)
  12.                     {
  13.                         nextAction.PerformAction(source);
  14.                         if (sheet.ActiveCell.CellType is ComboBoxCellType)
  15.                         {
  16.                             spread.EditMode = true;
  17.                         }
  18.                     }

  19.                 }
  20.             }
  21.         }
复制代码




回复 使用道具 举报
hbzck08
注册会员   /  发表于:2016-7-14 18:18:13
5#
这个就NB了,为啥我这加载第一个下拉菜单时会卡几秒?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-15 09:07:06
6#
本帖最后由 dexteryao 于 2016-7-15 09:10 编辑

几秒?这个有点夸张了,你菜单里数据多吗,我这挺快的。之前慢嘛?如果之前不慢你注释掉新加的代码,看是什么代码的问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部