找回密码
 立即注册

QQ登录

只需一步,快速开始

menghuanyunxia

高级会员

111

主题

396

帖子

1075

积分

高级会员

积分
1075

活字格认证微信认证勋章元老葡萄

menghuanyunxia
高级会员   /  发表于:2015-4-2 17:43  /   查看:6021  /  回复:7
I6KJEFEK~KEUOUPE3%~TXWT.png (15.75 KB, 下载次数: 251)

7 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-4-2 18:06:00
沙发
回复 1楼menghuanyunxia的帖子

你可以通过PSShape的鼠标事件和ContextMenu来实现。
在鼠标事件里展示一个ContextMenu来显示ToolTip。
代码参考:
  1. FarPoint.Win.Spread.DrawingSpace.PSShape pso = new FarPoint.Win.Spread.DrawingSpace.RectangleShape();

  2.             pso.CanFocus = true;
  3.             pso.SetBounds(25, 25, 120, 120);
  4.             this.fpSpread1.ActiveSheet.AddShape(pso);
  5.             pso.MouseDown += pso_MouseDown;
复制代码

MouseDown的事件:
  1. void pso_MouseDown(object sender, MouseEventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.DrawingSpace.PSShape pso = sender as FarPoint.Win.Spread.DrawingSpace.PSShape;
  4.             if (e.Button == System.Windows.Forms.MouseButtons.Right)
  5.             {
  6.                 ContextMenu cm = new ContextMenu();
  7.                 string content = "x:" + e.X + " y:" + e.Y.ToString()+" w:"+pso.Width+" h:"+pso.Height;
  8.                 MenuItem mi1 = new MenuItem(content);
  9.                 cm.MenuItems.Add(mi1);
  10.                 cm.Show(this.fpSpread1, new Point(e.X, e.Y));

  11.             }
  12.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
menghuanyunxia
高级会员   /  发表于:2015-4-2 19:14:00
板凳
你好,希望的不是右键菜单实现,而是鼠标经过该shape的时候显示tooltip
回复 使用道具 举报
menghuanyunxia
高级会员   /  发表于:2015-4-2 19:16:00
地板
希望实现的是如MouseMove类似的事件里面实现该tooltip功能
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-4-3 12:23:00
5#
回复 4楼menghuanyunxia的帖子

基本思路还是一致的。
但是将事件改成MouseMove,在鼠标移动事件里展示ToolTip。
代码参考:
  1.         ToolTip tip = new ToolTip();
  2.         void fpSpread1_MouseMove(object sender, MouseEventArgs e)
  3.         {
  4.             pso_MouseMove(sender, e);           
  5.         }

  6.         void pso_MouseMove(object sender, MouseEventArgs e)
  7.         {
  8.             FarPoint.Win.Spread.HitTestInformation info = this.fpSpread1.HitTest(e.X, e.Y);
  9.             if (info != null && info.ViewportInfo != null && info.ViewportInfo.InShape)
  10.             {            
  11.                 string content = "x:" + e.X + " y:" + e.Y.ToString()+" w:" + pso.Width + " h:" + pso.Height;                       
  12.                 tip.Show(content, this.fpSpread1);
  13.                 tip.ShowAlways = false;
  14.             }
  15.             else
  16.             {
  17.                 tip.Hide(fpSpread1);
  18.             }
  19.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
menghuanyunxia
高级会员   /  发表于:2015-4-3 12:51:00
6#
请问我如何拿到当前鼠标位置的这个psshape对象,在没有激活这个psshape的情况下?
回复 使用道具 举报
menghuanyunxia
高级会员   /  发表于:2015-4-3 14:50:00
7#
因为我需要显示的信息存储在psshape的tag上面了
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-4-3 17:45:00
8#
回复 6楼menghuanyunxia的帖子

通过Spread.ActiveSheet的GetShape方法可以获得,但是要知道shapeName。
另外一种方式就是设置全局变量的Shape。

鼠标位置不能拿到shape对象。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部