找回密码
 立即注册

QQ登录

只需一步,快速开始

wodetnt

银牌会员

15

主题

32

帖子

3039

积分

银牌会员

积分
3039

活字格认证

wodetnt
银牌会员   /  发表于:2011-2-2 16:39  /   查看:7942  /  回复:6
spread怎么判断是在column header上点击右键?我准备当在spread的列头上点右键时弹出菜单,但不知道怎么才能判断是在列头上点右键了,e.columnheader好像不行啊

6 个回复

倒序浏览
gw0506
超级版主   /  发表于:2011-2-9 11:05:00
沙发
你是挂的什么事件?
e.ColumnHeader怎么不行?
回复 使用道具 举报
wodetnt
银牌会员   /  发表于:2011-2-10 17:08:00
板凳
一旦点过一次之后,ColumnHeader获得焦点,在任意位置点右键都会被判断为是在ColumnHeader上点右键的
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-2-10 17:38:00
地板
你挂的什么事件?
能把代码贴出来么?
回复 使用道具 举报
gerry
论坛元老   /  发表于:2011-2-10 18:18:00
5#
根据您的需求我写了一个我的实现
  1. this.fpSpread1.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.fpSpread1_CellClick);
复制代码
下面这种实现是最初的版本。看起来e.ColumnHeader在我这里总是可行的。没有碰到过楼主的问题。
  1. private void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
  2.         {
  3.             if (e.Button == System.Windows.Forms.MouseButtons.Right && e.ColumnHeader)
  4.             {
  5.                 contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
  6.             }            
  7.         }
复制代码
不过为了保险起见。我又写了这个实现,相信应该能够解决您的问题。
  1. private void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
  2.         {            
  3.             Point p = fpSpread1.PointToClient(MousePosition);
  4.             if (e.Button == System.Windows.Forms.MouseButtons.Right && fpSpread1.HitTest(p.X, p.Y).Type == FarPoint.Win.Spread.HitTestType.ColumnHeader)
  5.             {
  6.                 contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
  7.             }
  8.         }
复制代码
回复 使用道具 举报
wodetnt
银牌会员   /  发表于:2011-2-11 10:23:00
6#
呵呵,谢谢,实现了,是我一开始判断条件加少了
回复 使用道具 举报
wangleiecho
中级会员   /  发表于:2012-3-15 11:00:00
7#
挺好 多谢gerry
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部