找回密码
 立即注册

QQ登录

只需一步,快速开始

laonawuli

银牌会员

39

主题

146

帖子

3383

积分

银牌会员

积分
3383

活字格认证

laonawuli
银牌会员   /  发表于:2011-12-12 14:57  /   查看:8530  /  回复:8
hello~

1.我往Sheet中添加了一个LineShape,然后它设置
    CanFocus = false;
            CanMove = Moving.None;
            CanRotate = false;
            CanSize =  Sizing.None;
            CanPrint = true;
我想让它成为一条普通的线,不希望它与鼠标发生什么关系,所以我把能找到的与鼠标发生关系的属性都设置成了false和None。但是在我设置这么多种属性后,再鼠标挪动到LineShape的两端时,鼠标还是会改变成调整Size时的那个光标。不知道我漏掉了什么属性没设置成false呢?
2.我发现通过上下左右键或者Shift+上下左右键无法激活SelectionChanged以及SelectionChanging事件,不知道是为什么呢?

PS:Farpoint 2.5 version

8 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2011-12-12 18:04:00
沙发

回复 1# laonawuli 的帖子

hello~
1. 可以设置 LineShape 下属性 Enabled=false;就可以使终端用户不能对 LineShape 进行操作。

2.不好意思,我没有重现你的问题,请问是否更改了默认的键盘映射 。如果新建一个工程,工程中只有 SelectionChanged 以及 SelectionChanging 事件还会出现该问题吗?如果仍然解决不了,请发 Demo 到论坛上来。
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-12-12 18:53:00
板凳
原帖由 iceman 于 2011-12-12 18:04:00 发表
hello~
1. 可以设置 LineShape 下属性 Enabled=false;就可以使终端用户不能对 LineShape 进行操作。

2.不好意思,我没有重现你的问题,请问是否更改了默认的键盘映射 。如果新建一个工程,工程中只有 SelectionChanged 以及 SelectionChanging 事件还会出现该问题吗?如果仍然解决不了,请发 Demo 到论坛上来。


1.iceman,我把代码改成如下形式:
            CanFocus = false;
            CanMove = Moving.None;
            CanRotate = false;
            CanSize = Sizing.None;
            CanPrint = true;
            Enabled = false;
还是不行啊。。。鼠标放到线的两端,鼠标还是会变成  <- -> 这个光标

2. 我错了,Fp我在界面设计器上剪切过,又复制上去了,结果导致事件绑定消失了。。。我错了。蛋疼的界面设计器啊
刚才绑定加上去了,Shift+上下左右键确实会激活SelectionChanging,但是直接按上下左右键,是不会激活SelectionChanging的。
而且,我在使用Shift+上下左键键选择区域时发现了一个问题:用鼠标选择区域与用Shift+上下左右键所激活的SelectionChanging事件中,SelectionChangingEventArgs.Range 不同。
例如,
我不想让第十行被选中,于是在SelectionChanging中我这样写:
if (e.Range.IntersectRow(9))
    e.Cancel=true
这个方式在用鼠标进行选择区域的时候是好用的。
但是,如果换成了Shift+上下左右来操作,那么第十行就可以被选中,我调试SelectionChanging事件,发现e.Range.Row不同,用键盘操作的e.Range.Row总比鼠标操作的e.Range.Row慢一拍。
我感觉这个可能是FP的BUG吧...?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-12 19:35:00
地板

回复 3# laonawuli 的帖子

laonawuli  你好,问题已经接收,稍后回复~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-13 10:57:00
5#

回复 4# iceman 的帖子

laonawuli  你好,
1.不好意思,由于我的失误,忘记了测试环境为 Spread 2.5,请尝试设置 LineShape 下的 Locked 属性为 true ,看是否生效?
2.由于两种选择方式触发的时机不同,所以导致 CellRange 不同,如果想取得选中单元格范围,建议使用 fpSpread1_SelectionChanged 事件,这样两种选择方式可以获得同样的 CellRange。
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-12-13 11:43:00
6#
原帖由 iceman 于 2011-12-13 10:57:00 发表
laonawuli  你好,
1.不好意思,由于我的失误,忘记了测试环境为 Spread 2.5,请尝试设置 LineShape 下的 Locked 属性为 true ,看是否生效?
2.由于两种选择方式触发的时机不同,所以导致 CellRange 不同,如果想取得选中单元格范围,建议使用 fpSpread1_SelectionChanged 事件,这样两种选择方式可以获得同样的 CellRa


1.好使了~!
2.版版,我需要根据选取位置动态判断是否满足条件,然后不满足条件,我好e.Cancel=true哦
SelectionChanged里面没有e.Cancel。。。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-13 11:53:00
7#

回复 6# laonawuli 的帖子

laonawuli  ,可以在 fpSpread1_SelectionChanged  事件中添加如下代码取消选择操作:

  1. this.fpSpread1.ActiveSheet.RemoveSelection(e.Range.Row, e.Range.Column, e.Range.RowCount, e.Range.ColumnCount);
复制代码
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-12-13 12:39:00
8#
原帖由 iceman 于 2011-12-13 11:53:00 发表
laonawuli  ,可以在 fpSpread1_SelectionChanged  事件中添加如下代码取消选择操作:[code]
this.fpSpread1.ActiveSheet.RemoveSelection(e.Range.Row, e.Range.Column, e.Range.RowCount, e.Range.ColumnCoun......


OK 搞定~多谢iceman~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-13 13:01:00
9#

回复 8# laonawuli 的帖子

:share: 不客气~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部