找回密码
 立即注册

QQ登录

只需一步,快速开始

taxsoft

中级会员

76

主题

246

帖子

608

积分

中级会员

积分
608

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

taxsoft
中级会员   /  发表于:2012-5-4 08:56  /   查看:11241  /  回复:20
想添加SheetTab的上下文菜单,没有找到合适的对象:
以下代码如何修改?
FPspread1.TabStrip.ActiveSheetTab.ContextMenuStrip = ContextMenu_tab;

20 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-4 10:11:00
沙发
taxsoft 你好

可以在Spread的MouseDown中来添加显示右键菜单的逻辑:
  1.     private void fpSpread1_MouseDown(object sender, MouseEventArgs e)
  2.     {
  3.         if ((e.Button == System.Windows.Forms.MouseButtons.Right) && (fpSpread1.HitTest(e.X,e.Y).Type == FarPoint.Win.Spread.HitTestType.TabStrip))
  4.         {
  5.             contextMenuStrip1.Show(fpSpread1,e.Location);
  6.         }
  7.     }
复制代码
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-4 13:06:00
板凳
但是 fpSpread1  已经绑定了一个菜单
也就是说,在单元格区域已经绑定了一个右键菜单,再用您的代码,是不起作用的。

自己解决,用 MouseUp 就OK了
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-4 14:30:00
地板
完整代码
  1. private void fpSpread1_MouseUp(object sender, MouseEventArgs e)
  2.     {
  3.         if ((e.Button == System.Windows.Forms.MouseButtons.Right) && (fpSpread1.HitTest(e.X,e.Y).Type == FarPoint.Win.Spread.HitTestType.TabStrip))
  4.         {
  5. //切换sheet
  6.            fpSpread1.ActiveSheetIndex = fpSpread1.HitTest(e.X, e.Y).TabStripInfo.Sheet;
  7.             contextMenuStrip1.Show(fpSpread1,e.Location);
  8.         }
  9.     }

复制代码
总的来说,还是在MouseDown更好,但是目前和官方设计器是一致的。
非常感谢!
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-4 15:03:00
5#
另外,
1.当只有一个sheet的时候,SheetTab 是不显示的,如何显示?
2.前面的代码还有问题,如何知道当前光标在 页签上,目前的代码,只要光标在页签所在工具条,就出对应菜单了,不够准确。
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-4 15:12:00
6#

回复 2# dof 的帖子

请关注5楼

第二个问题我找到办法了:
  1. private void fpSpread1_MouseUp(object sender, MouseEventArgs e)

  2.     {

  3.         if ((e.Button == System.Windows.Forms.MouseButtons.Right) && (fpSpread1.HitTest(e.X,e.Y).Type == FarPoint.Win.Spread.HitTestType.TabStrip) && fpSpread1.HitTest(e.X, e.Y).TabStripInfo.Sheet != -1   && fpSpread1.HitTest(e.X, e.Y).TabStripInfo.Sheet != fpSpread1.Sheets.Count )

  4.         {

  5.             //切换sheet

  6.              fpSpread1.ActiveSheetIndex = fpSpread1.HitTest(e.X, e.Y).TabStripInfo.Sheet;

  7.             contextMenuStrip1.Show(fpSpread1,e.Location);

  8.         }

  9.     }
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-4 15:58:00
7#

回复 5# taxsoft 的帖子

第一个问题可以设置FpSprad.TabStripPolicy = Always
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-4 15:58:00
8#

回复 2# dof 的帖子

5楼第一个问题,我采用了一个临时的办法,就是使用一个隐藏的sheet ,效果是达到了,但是明显是个愚蠢的办法,而且,很多地方都要额外处理这个sheet
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-4 16:00:00
9#
5楼的第一个问题请参考7楼的回答,需要设置以下属性
  1. fpSprad1.TabStripPolicy = Always
复制代码
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-4 16:01:00
10#
原帖由 dof 于 2012-5-4 16:00:00 发表
5楼的第一个问题请参考7楼的回答,需要设置以下属性
  1. fpSprad1.TabStripPolicy = Always
复制代码


谢谢,由于没有刷新页面,没有注意到回复,辛苦了!
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部