找回密码
 立即注册

QQ登录

只需一步,快速开始

bingshang23

新手上路

2

主题

4

帖子

44

积分

新手上路

积分
44
  • 40

    金币

  • 主题

  • 帖子

最新发帖
bingshang23
新手上路   /  发表于:2013-11-15 16:37  /   查看:4959  /  回复:3
当且仅当选择一整列或一整列的时候,我想让Spread可以被复制但不可以被粘贴。请问怎么才能实现?

3 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-11-15 17:23:00
沙发
回复 1楼bingshang23的帖子

可以定制快捷键禁止使用粘贴功能:

  1. FarPoint.Win.Spread.InputMap inputmap1;
  2.             inputmap1 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  3.             inputmap1.Put(new FarPoint.Win.Spread.Keystroke(Keys.V, Keys.Control), FarPoint.Win.Spread.SpreadActions.None);
  4.             FarPoint.Win.Spread.InputMap inputmap2;
  5.             inputmap2 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  6.             inputmap2.Put(new FarPoint.Win.Spread.Keystroke(Keys.V, Keys.Control), FarPoint.Win.Spread.SpreadActions.None);
复制代码


但是,这个禁用了所有粘帖功能,请问你是想只在选择复制整列的时候才禁止吗?
回复 使用道具 举报
bingshang23
新手上路   /  发表于:2013-11-15 18:15:00
板凳
我是想实现只在选中整列的时候禁止粘贴功能。能实现么?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-18 10:22:00
地板
回复 3楼bingshang23的帖子

这需要结合几个事件来做,请参考:

  1. public Form1()
  2.         {
  3.             InitializeComponent();
  4.             this.fpSpread1.Sheets[0].Cells[0, 0].BackColor = Color.Red;

  5.             this.fpSpread1.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(fpSpread1_CellClick);
  6.             this.fpSpread1.ClipboardPasting += new FarPoint.Win.Spread.ClipboardPastingEventHandler(fpSpread1_ClipboardPasting);
  7.             this.fpSpread1.ClipboardChanging += new EventHandler(fpSpread1_ClipboardChanging);
  8.         }

  9.         void fpSpread1_ClipboardPasting(object sender, FarPoint.Win.Spread.ClipboardPastingEventArgs e)
  10.         {
  11.             if (isHeaderFlag)
  12.             {
  13.                 e.Handled = true;
  14.             }
  15.         }
  16.         bool isHeaderFlag = false;
  17.         bool isPasterFlat = false;

  18.         void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
  19.         {
  20.             if (e.ColumnHeader)
  21.             {
  22.                 isHeaderFlag = true;
  23.             }
  24.             else
  25.             {
  26.                 isHeaderFlag = false;
  27.             }
  28.         }

  29.         void fpSpread1_ClipboardChanging(object sender, EventArgs e)
  30.         {
  31.             if (isHeaderFlag)
  32.             {
  33.                 isPasterFlat = true;
  34.             }
  35.         }
复制代码

也许有些情况我没有考虑到,你再修改下应该没问题了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部