找回密码
 立即注册

QQ登录

只需一步,快速开始

qinzhu_

初级会员

14

主题

51

帖子

223

积分

初级会员

积分
223

活字格认证

qinzhu_
初级会员   /  发表于:2012-10-17 15:29  /   查看:6356  /  回复:8
我想实现点击spread列头显示一个combox进行筛选
我现在做的是通过GetColumnHeaderRectangle()获得列的高和宽,再计算当前列前面有多少列,加上所有的列宽
但是如果列多的情况下,水平方向出现滚动条,点击后面的列头的时候,上面的方法就不能用了!
请版主赐教...

8 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-10-17 16:21:00
沙发
回复 1楼qinzhu_的帖子

可以通过以下方式获取当列之前所有列宽。

  1. private void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
  2.         {
  3.             float columnswidth = 0;
  4.             for (int i = 0; i < e.Column; i++)
  5.             {
  6.                 columnswidth += this.fpSpread1.Sheets[0].Columns[i].Width;
  7.             }
  8.         }
复制代码
回复 使用道具 举报
qinzhu_
初级会员   /  发表于:2012-10-17 16:26:00
板凳
这个能够实现,我讲combox.left=columnswidth;可以将combox定位到当前点击的列头的位置,但是拉动滚动条操作后面的列,这个时候就没有法子设置combox.left值了!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-10-17 18:38:00
地板
回复 3楼qinzhu_的帖子

可以通过以下方法获取位置:

  1.      private void fpSpread1_MouseDown(object sender, MouseEventArgs e)
  2.         {
  3.             Point location = e.Location;
  4.             int columnswidth = location.X;
  5.         }
复制代码
回复 使用道具 举报
qinzhu_
初级会员   /  发表于:2012-10-18 08:47:00
5#
只是点击列头,计算当前列头的坐标,设置combox在当前点击列头的位置显示,看上去就像列头单元格变成combox一样?请教版主怎么实现?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-10-18 09:26:00
6#
回复 5楼qinzhu_的帖子

请问楼主想在什么位置弹出 Combo 呢?能否给个截图?
回复 使用道具 举报
qinzhu_
初级会员   /  发表于:2012-10-18 09:57:00
7#
11.jpg (44.07 KB, 下载次数: 427)
回复 使用道具 举报
qinzhu_
初级会员   /  发表于:2012-10-18 09:58:00
8#
呵呵,麻烦版主了!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-10-18 09:59:00
9#
回复 7楼qinzhu_的帖子

感谢楼主的反馈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部