找回密码
 立即注册

QQ登录

只需一步,快速开始

csking

银牌会员

5

主题

13

帖子

3951

积分

银牌会员

积分
3951

活字格认证

csking
银牌会员   /  发表于:2014-6-10 23:13  /   查看:5750  /  回复:3
和上面一个问题类似,我将EditModePermanent和EditModeReplace设置成了true。
①初始化时,我设置activerow是第一行,但无法全选第一行的输入框的内容,设置activeCell也不好用。
②回车事件中没有找到move到下一个入力控件的枚举值,moveTonextItem比较像,但焦点是落在了下一行的非入力控件上。有两列是入力控件,按回车键,怎么顺序跳下去呢?

3 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-6-11 15:22:00
沙发
回复 1楼csking的帖子

问题一我通过以下代码测试没有重现:
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.EditModePermanent = true;
  4.             this.fpSpread1.EditModeReplace = true;
  5.             this.fpSpread1.ActiveSheet.ColumnCount = 2;
  6.             this.fpSpread1.ActiveSheet.Columns[1].Locked = true;
  7.             this.fpSpread1.CellClick += fpSpread1_CellClick;
  8.             this.fpSpread1.ActiveSheet.Cells[0, 0].Value = "test";
  9.             this.fpSpread1.ActiveSheet.Cells[1, 0].Value = "test";
  10.         }

  11.         void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
  12.         {
  13.             this.fpSpread1.ActiveSheet.SetActiveCell(e.Row,0);
  14.         }
复制代码


Demo1.gif
问题二需要和你确认下,有两列可输入单元格,是需要按需回车键跳转到下一行还是?
回复 使用道具 举报
csking
银牌会员   /  发表于:2014-6-12 09:55:00
板凳
回复 2楼iceman的帖子

问题一解决了。
问题二:
比如表格有3列,
第一列            第二列              第三列
(Label)  (TextBox)      (TextBox)
我想的是,按下回车时,从第一行的第二列跳到第一行的第三列,
然后从第一行的第三列跳到第二行的第二列,依次类推。
就是在入力项目上进行焦点迁移
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-6-12 18:00:00
地板
回复 3楼csking的帖子

实现代码如下:


  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.EditModePermanent = true;
  4.             this.fpSpread1.EditModeReplace = true;

  5.             this.fpSpread1.ActiveSheet.ColumnCount = 3;

  6.             this.fpSpread1.ActiveSheet.Columns[0].Locked = true;

  7.             this.fpSpread1.ActiveSheet.ActiveColumnIndex = 1;


  8.             InputMap im1 = fpSpread1.GetInputMap(InputMapMode.WhenFocused);
  9.             ActionMap am = fpSpread1.GetActionMap();
  10.             im1.Put(new Keystroke(Keys.Enter, Keys.None), "NewControlHomeAction");
  11.             am.Put("NewControlHomeAction", new NewControlHomeAction());

  12.             InputMap im2 = fpSpread1.GetInputMap(InputMapMode.WhenAncestorOfFocused);
  13.             ActionMap am2 = fpSpread1.GetActionMap();
  14.             im2.Put(new Keystroke(Keys.Enter, Keys.None), "NewControlHomeAction");
  15.             am2.Put("NewControlHomeAction", new NewControlHomeAction());
  16.         }
  17.     }

  18.     public class NewControlHomeAction : FarPoint.Win.Spread.Action
  19.     {
  20.         public override void PerformAction(object source)
  21.         {
  22.             if (source is SpreadView)
  23.             {
  24.                 SpreadView spreadView = (SpreadView)source;
  25.                 int activeSheet=spreadView.ActiveSheetIndex;
  26.                 int activeRow = spreadView.Sheets[activeSheet].ActiveRowIndex;
  27.                 int activeCol = spreadView.Sheets[activeSheet].ActiveColumnIndex;

  28.                 if (activeCol==1)
  29.                 {
  30.                     spreadView.Sheets[activeSheet].SetActiveCell(activeRow, activeCol + 1);
  31.                 }
  32.                 else if (activeCol==2)
  33.                 {
  34.                     spreadView.Sheets[activeSheet].SetActiveCell(activeRow + 1, activeCol-1);
  35.                 }
  36.             }
  37.         }
  38.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部