找回密码
 立即注册

QQ登录

只需一步,快速开始

zhfstrong

注册会员

10

主题

43

帖子

107

积分

注册会员

积分
107
zhfstrong
注册会员   /  发表于:2019-8-19 11:54  /   查看:3783  /  回复:7
单据中有“数量,单价、金额”列,想实现离开“数量”列时执行一个事件,离开“单价”列时执行一个事件,离开“金额”列时执行一个事件。但不知道格式是怎样写的,请给我模板格式,谢谢!
           我现在是用绑定三个textbox的离开事件来做的,但经常遇到这三列互相反推时,对应的列有值,但显示到textbox中的值与列的值不一样。比较混乱。所以想直接用”列“离开事件来实现。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-19 15:56:04
沙发
下面的代码供参考,在移出第3列时触发,实际上是在move时用hittest来判断移动之前和之后鼠标所处的位置

  1. c1FlexGrid1.MouseMove += C1FlexGrid1_MouseMove;
  2.         HitTestInfo info=new HitTestInfo();
  3.         private void C1FlexGrid1_MouseMove(object sender, MouseEventArgs e)
  4.         {
  5.             
  6.             if (info.Column == 2)
  7.             {
  8.                 info = c1FlexGrid1.HitTest(e.X, e.Y);
  9.                 if (info.Column != 2)
  10.                     MessageBox.Show("移动出了第二列");
  11.             }

  12.             info = c1FlexGrid1.HitTest(e.X, e.Y);
  13.         }
复制代码
回复 使用道具 举报
zhfstrong
注册会员   /  发表于:2019-8-19 17:35:26
板凳
谢谢版主的回复。版主的代码放到程序时,第一行有提示“上下文不存在”。
不过请版主不要往鼠标离开的方向想,因为在单据录入时,绝大机会都是用“回车”往右跳的,整个录入过程可能用不到鼠标的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-19 18:03:41
地板
第一行是需要放到load事件中的

如果你说的是选择的单元格改变的话,那直接用SelChange事件来判断改变后选择的单元格就行(Selection属性),
回复 使用道具 举报
zhfstrong
注册会员   /  发表于:2019-8-21 10:44:55
5#
谢谢版主的回复。
其实我要实现的效果也很直接,就是编辑完“数量列”任一个单元格后,离开时就发生事件。至于是用“鼠标,回车,上下键,左右键”离开,都有可能。总之就是离开当前所编辑的单元格时执行代码。
       使用过Cellchanged事件是可以了。但我不知道怎样判断所编辑的单元格是属于“数量列”的。
敬请指点一下。谢谢!
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-21 14:03:37
6#
可以用BeforeSelChange 事件
c1FlexGrid1.BeforeSelChange += C1FlexGrid1_BeforeSelChange;

在事件中可以获取,新老单元格的信息
  1.         private void C1FlexGrid1_BeforeSelChange(object sender, RangeEventArgs e)
  2.         {
  3.             Point oldcell = new Point(e.OldRange.TopRow, e.OldRange.LeftCol);
  4.             Point newcell = new Point(e.NewRange.TopRow, e.NewRange.LeftCol);
  5.         }
复制代码
回复 使用道具 举报
zhfstrong
注册会员   /  发表于:2019-8-22 20:44:45
7#
Richard.Ma 发表于 2019-8-21 14:03
可以用BeforeSelChange 事件
c1FlexGrid1.BeforeSelChange += C1FlexGrid1_BeforeSelChange;

谢谢!虽不太明白这几句代码怎么用,但还是先试试。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-23 00:57:50
8#
不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部