找回密码
 立即注册

QQ登录

只需一步,快速开始

sxyweiren

中级会员

73

主题

366

帖子

755

积分

中级会员

积分
755

活字格认证微信认证勋章

sxyweiren
中级会员   /  发表于:2016-2-4 15:20  /   查看:5707  /  回复:7
因为Spr7.0与Spread For ActiveX 7.0的Text类型单元格差异过大,只能通过自定义单元格来找平。
比如:同样的字体两种单元格的字体宽度不一致。MaxLength属性限制的字符内容不一样。SpreadForNET限制的是字符数。AxtiveX限定的是字节数。
所以现在用GxTextBox单元格做了下封装。

但是现在发现一个问题,就是自定义单元格的属性,如果通过设计器修改的话,不能正常的反映到Designer文件里面去。
比如我给单元格增加了一个CharacterCasing属性,来对应是否自动变换大小写。

请问这个问题如何解决??

7 个回复

倒序浏览
gw0506
超级版主   /  发表于:2016-2-4 15:37:00
沙发
通过“设计器”改,和不能反映到Designer“文件”里去。这句我没理解。

你是override了GCTextBox?写了个MyGCTextBox,然后加了个属性CharacterCasing?
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2016-2-5 09:47:00
板凳
回复 2楼gw0506的帖子

对,我自己做了CharacterCasing属性。
在Form里面,右击Spread,可以选择Designer.然后呼出的那个设计Spread模板的画面,我称为"设计器"。

由于自定义控件类型在设计器里面看不到。所以我首先把其中的两列变成了TextBox类型的单元格。
然后进入画面的Designer.VB文件,把所有的TextBoxCellType置换成了MyGctextBoxCellType。

在然后我在设计器里面修改CharacterCasing属性的时候,设计器里面的属性不能正常的保存到画面的Designer.VB文件里。导致下次我打开设计器,CharacterCasing属性还是我设计的默认值。
画面跑起来也是一直是默认值,从而实现不了我想要的效果。

虽然现在直接编辑画面的Designer.VB文件,把对应的CellType的CharacterCasing直接写死,可以实现。但是想问问怎样设计的属性可以实现设计器与画面的Designer.VB文件的互通。
(也就是说,
一,我手动修改Designer.Vb文件,打开设计器可以读取到单元格的属性。
二,在设计器里面修改单元格的属性,关闭设计器这个属性可以正常的写入Designer.vb文件)
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-2-5 11:48:00
地板
设计时中,VS的专门的机制支持设计时开发。对于一个属性,需要有UITypeEditor,TypeConverter以及DisngerSerilizationVisibilty等类库的支持才能让它正常工作。我建议你不要做这些了,工作量不小,而且Spread Designer已经写死了,你能不能加进去还不确定。
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2016-2-5 14:36:00
5#
回复 4楼gw0506的帖子

大神有没有Sample?
给个呗。。就算是这个项目不用。拿来学习下也是极好的啊。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-2-5 14:51:00
6#
这个没有,也不能有。控件源码处处都是这样的demo。
给你个相关的文档吧,MSDN里的。感兴趣就去那里搜,还有更多的。
https://msdn.microsoft.com/zh-cn/library/ms171840.aspx
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2016-2-5 16:11:00
7#
回复 6楼gw0506的帖子

恩谢谢大神了。。。

我去看看
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-2-5 18:03:00
8#
不用客气~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部