找回密码
 立即注册

QQ登录

只需一步,快速开始

xzhy80

注册会员

5

主题

27

帖子

56

积分

注册会员

积分
56

活字格认证微信认证勋章

xzhy80
注册会员   /  发表于:2016-7-27 15:01  /   查看:7021  /  回复:14
本帖最后由 xzhy80 于 2016-7-27 15:12 编辑

如题用的是spreadJ8.0
我先定义mytextcelltype类,并继承一个celltype.textcelltype类型,
在继承类里面,目前是什么代码也没写,
将spread的第2列的celltype给设置成mytextcelltype类型

将spread的列标题,设置文字,
执行程序时,列标题会向右窜一列,不知道是什么原因造成的呢



因为内网原因,代码不能附上

大概效果如下图
blob898093566.png

类型定义
public class mytextcelltype
inherits farpoint.win.spread.celltype.textcelltype

end class




14 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-27 15:11:48
沙发
您是用的什么平台winform 的吗?
您是设置好之后直接执行就会出现列头往后移动的情况吗,如果不设置单元格类型就不会后移?
您可以先注释掉代码排除下原因。
回复 使用道具 举报
xzhy80
注册会员   /  发表于:2016-7-27 15:20:54
板凳
本帖最后由 xzhy80 于 2016-7-27 15:23 编辑
dexteryao 发表于 2016-7-27 15:11
您是用的什么平台winform 的吗?
您是设置好之后直接执行就会出现列头往后移动的情况吗,如果不设置单元格 ...

我用的是vb.net2013,framework4.5.1版本,

因为继承celltype封装了一些其他的代码,所以需要用自定义类型的进行设置
发现问题后,经过反复调查,如果用系统自带的celltype进行设置,则不会出现列头后移的情况
只有设置自定义的celltype类型以后,整个进行拷贝,粘贴才会出现向后窜一列的现象,
inputmapwhenfocusednormal的CTRL+V也进行spreadactions.clipboardPasteValues的设置了
并且代码已经全部删除了
只有列类型的定义与代码中设置列类型的source

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-27 16:35:37
地板
您好,我将您的贴子移动到winform专区。
同时因为您无法提供Demo或者代码,所以我这里只能通过您的描述尝试重现问题,有结果会给您反馈。
建议你还是提供一些与业务无关可以重现问题的代码帮助重现问题。
回复 使用道具 举报
xzhy80
注册会员   /  发表于:2016-7-29 13:21:44
5#
又试了一次,这次把所有代码全注释掉,发现继承和没继承的代码,拷贝时候都一样的串了一列标题,只是在inputmapwhenfocusednormal.put中,设置了control+keys.v的clipboardpasteasstring和clipboardpastevalues
下图中,左侧为拷贝源,中间为asstring的有窜列,右边的为values的,后台代码全部没有,只知道是什么原因呢
image.jpeg
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-29 14:40:41
6#
我在页面上画了两个spread,从下面的spread2往上面的复制,没有出现问题,您看看我的代码里还少了什么
blob554518126.png

  1.             fpSpread2.ActiveSheet.ColumnHeader.Cells[0, 0].Value = "A1";
  2.             fpSpread2.ActiveSheet.ColumnHeader.Cells[0, 1].Value = "B2";
  3.             fpSpread2.ActiveSheet.ColumnHeader.Cells[0, 2].Value = "C3";
  4.             fpSpread2.ActiveSheet.ColumnHeader.Cells[0, 3].Value = "D4";
  5.             fpSpread2.ActiveSheet.ColumnHeader.Cells[0, 4].Value = "E5";
  6.             fpSpread2.ActiveSheet.Cells[4, 4].Value = "E5";
  7.             fpSpread2.ActiveSheet.Cells[2, 2].Value = "C3";

  8.             FarPoint.Win.Spread.InputMap inputmap1;
  9.             inputmap1 = fpSpread2.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  10.             inputmap1.Put(new FarPoint.Win.Spread.Keystroke(Keys.V, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardPasteAsString);
复制代码
回复 使用道具 举报
xzhy80
注册会员   /  发表于:2016-7-29 15:28:27
7#
本帖最后由 xzhy80 于 2016-7-29 15:34 编辑

先谢谢及时的回复,我将你的代码给运行了一次,确实没问题,但我把
inputmap1 = fpSpread2.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
改成下面代码后,就出现了我说的窜列的问题
inputmap1 = fpSpread2.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);





回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-29 15:46:12
8#
您的Spread版本是什么?我9.0版本改了也没出现问题,
还有您Ctrl+V粘贴前是先点击左上角后再粘贴的吗
回复 使用道具 举报
xzhy80
注册会员   /  发表于:2016-7-29 15:47:04
9#
因为我封装了spread后,在画面的designer画面会自动生成InputMap的代码,
fpspread1_InputMapWhenFocusedNormal.Put(New farpoint.win.spread.keystroke(system.windows.forms.keys.v,ctype((system.windows.forms.keys.control or system.windows.forms.keys.none),system.windows.forms.keys)),farpoint.win.spread.spreadactions.clipboardpasteAsString)

并且发现,如果用ClipboardPasteValues来进行拷贝粘贴的话,会讲spread的style也给复制过来,
如果用ClipboardPasteAsString来拷贝粘贴,则会窜列头,不会复制style。
style的复制这个跟帮助上描述的一样,但这个窜列的问题,不知道应该怎样解决。

开始怀疑是因为corner不能赋值,想了挺多办法也不好用
回复 使用道具 举报
xzhy80
注册会员   /  发表于:2016-7-29 15:49:53
10#
dexteryao 发表于 2016-7-29 15:46
您的Spread版本是什么?我9.0版本改了也没出现问题,
还有您Ctrl+V粘贴前是先点击左上角后再粘贴的吗

是SPREAD for Windows Forms 8.0J版本的
拷贝前是先点的左上角corner进行全选
然后ctrl+c,
到第二个spread上也先点的corner全选
直接ctrl+v
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部