找回密码
 立即注册

QQ登录

只需一步,快速开始

15211598002

中级会员

5

主题

21

帖子

636

积分

中级会员

积分
636

活字格认证

15211598002
中级会员   /  发表于:2012-4-25 10:05  /   查看:10231  /  回复:10
如果在Spread 中的Combobox 列中检测回车键,我是想按回车键自动跳到下一个输入框中,谢谢。

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-4-25 10:52:00
沙发

回复 1# 15211598002 的帖子

15211598002 你好,
我对该 Case 的理解是,如果第一列为 ComboBoxCellType ,那么在第一列点击"回车键",光标自动跳转到同行的下一列单元格。实现方法如下:

  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.CellType.ComboBoxCellType cmbocell = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
  4.             cmbocell.Items = (new String[] { "January", "February", "March", "April", "May", "June" });
  5.             cmbocell.AcceptsArrowKeys = FarPoint.Win.SuperEdit.AcceptsArrowKeys.AllArrows;
  6.             cmbocell.AutoSearch = FarPoint.Win.AutoSearch.SingleCharacter;
  7.             cmbocell.Editable = true;
  8.             cmbocell.ListAlignment = FarPoint.Win.ListAlignment.Left;
  9.             cmbocell.ListOffset = 20;
  10.             cmbocell.ListWidth = 0;
  11.             cmbocell.MaxDrop = 4;
  12.             fpSpread1.Sheets[0].Columns[0].CellType = cmbocell;
  13.         }

  14.         private void fpSpread1_KeyPress(object sender, KeyPressEventArgs e)
  15.         {
  16.             if (this.fpSpread1.Sheets[0].ActiveColumnIndex==0)
  17.             {
  18.                 if (e.KeyChar.ToString() == "\r")
  19.                 {
  20.                     this.fpSpread1.Sheets[0].SetActiveCell(this.fpSpread1.Sheets[0].ActiveRowIndex, this.fpSpread1.Sheets[0].ActiveColumnIndex + 1);
  21.                 }
  22.             }
  23.         }
复制代码
回复 使用道具 举报
15211598002
中级会员   /  发表于:2012-4-25 14:09:00
板凳
如果加上            
fpSpread1.EditModeReplace = true;
fpSpread1.EditModePermanent = true;
这个就不行了,我的想法就是回车键之后直接选择出下拉列表框,最好能够弹出下拉列表,通过光标上下键选择项目,然后回车就跳到下一个输入框中,不知道这样可否?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-25 15:25:00
地板

回复 3# 15211598002 的帖子

15211598002  你好,下面代码实现的效果为:第一次点击 Enter 键->弹出下拉框->光标选择->再次点击 Enter 键选择结束->第三次点击 Enter 键->跳转到下一列。

  1. int entercount = 0;
  2.         private void fpSpread1_KeyPress(object sender, KeyPressEventArgs e)
  3.         {

  4.             if (this.fpSpread1.Sheets[0].ActiveColumnIndex == 0)
  5.             {
  6.                 if (e.KeyChar.ToString() == "\r")
  7.                 {
  8.                     if (entercount == 0)
  9.                     {
  10.                         FarPoint.Win.FpCombo editor = this.fpSpread1.EditingControl as FarPoint.Win.FpCombo;
  11.                         editor.ShowList(true);
  12.                         editor.KeyPress += new KeyPressEventHandler(editor_KeyPress);
  13.                         editor.Focus();
  14.                         entercount++;
  15.                     }
  16.                     else
  17.                     {
  18.                         this.fpSpread1.Sheets[0].ActiveColumnIndex += 1;
  19.                         entercount = 0;
  20.                     }
  21.                 }
  22.             }
复制代码
回复 使用道具 举报
15211598002
中级会员   /  发表于:2012-4-25 16:09:00
5#
不行哦,关键的问题我现在是想在ComboBoxCellType 中按回车键。我能检测出来。
回复 使用道具 举报
15211598002
中级会员   /  发表于:2012-4-25 16:10:00
6#
在fpSpread1_KeyPress事件中检测不到回车键信息
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-25 17:38:00
7#

回复 6# 15211598002 的帖子

15211598002  你好,
FarPoint.Win.FpCombo 类下有 Close_Up 事件,响应 FpCombo Editor 的关闭事件,楼主可以尝试下。
回复 使用道具 举报
15211598002
中级会员   /  发表于:2012-4-25 18:13:00
8#
谢谢,
回复 使用道具 举报
15211598002
中级会员   /  发表于:2012-4-25 18:14:00
9#
谢谢版主,没有办法 在KEYDOWN 事件中检测吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-25 18:28:00
10#

回复 9# 15211598002 的帖子

15211598002 你好,
KeyDown 事件为 FpCombo 继承而来,内部并没有实现,所以无法触发该事件。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部