找回密码
 立即注册

QQ登录

只需一步,快速开始

szld

论坛元老

38

主题

94

帖子

2万

积分

论坛元老

积分
29978

活字格认证

szld
论坛元老   /  发表于:2013-9-10 11:11  /   查看:6471  /  回复:5
spread 里能不能用ctrl+鼠标左键同时选中多行?可以的话怎么实现?

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-9-10 12:21:00
沙发
回复 1楼szld的帖子

可以通过 SelectionUnit 属性设置选择单位为行,MultiRange 属性设置为多选,代码如下:

  1.        this.fpSpread1.Sheets[0].SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Row;
  2.        this.fpSpread1.Sheets[0].SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange;
复制代码
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2013-9-16 16:31:00
板凳
回复 2楼iceman的帖子

那怎样判断当前Spread有多少行被选中呢??

如果在第一行按下鼠标,然后在第五行松开鼠标。这个时候应该是5行选中状态的。
那么如何获得最后松开的行的行号呢?

如何判断某一行是否处于选中状态呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-16 17:27:00
地板
回复 3楼sxyweiren的帖子

可以通过 Spread SelectionChanged 事件获取以上信息:

  1. private void fpSpread1_SelectionChanged(object sender, FarPoint.Win.Spread.SelectionChangedEventArgs e)
  2.         {
  3.             MessageBox.Show("共有:" +e.Range.RowCount.ToString()+"行被选中");
  4.             MessageBox.Show(("最后一行索引为:" + (e.Range.Row + e.Range.RowCount).ToString()));
  5.         }
复制代码
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2013-9-17 13:28:00
5#
回复 4楼iceman的帖子

只能通过事件完成么?

如果属于那种间隔选中的呢?
就是我按住Ctrl+鼠标左键选中不连续的行呢?这样有没有方法判断?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-17 15:09:00
6#
回复 5楼sxyweiren的帖子

sxyweiren 你好,

针对这种情况可以通过 GetSelections 方法获取:

  1. private void getSelectionsToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.Model.CellRange[] crs = this.fpSpread1.Sheets[0].GetSelections();
  4.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部