找回密码
 立即注册

QQ登录

只需一步,快速开始

Hjr2350
论坛元老   /  发表于:2013-1-24 14:36  /   查看:14928  /  回复:15
  1.         public class PopupCellType : FarPoint.Win.Spread.CellType.GeneralCellType
  2.         {
  3.             UserControl1 control = new UserControl1();
  4.             public override Control GetEditorControl(Control parent, FarPoint.Win.Spread.Appearance appearance, float zoomFactor)
  5.             {
  6.                 return control;
  7.             }
  8.         }

  9.         private void UserControl_ToolStripMenuItem_Click(object sender, EventArgs e)
  10.         {
  11.             PopupCellType UserType = new PopupCellType();
  12.             fpSpread1.ActiveSheet.Cells[0, 0].CellType = UserType;
  13.             this.fpSpread1_Sheet1.Rows[0].Height = 140;
  14.             this.fpSpread1_Sheet1.Columns[0].Width = 140;

  15.         }
复制代码


我按照ruby大大的“[经验分享] Spread创建自定义单元格类型”http://gcdn.grapecity.com/showtopic-4201.html建立一个自定义的单元格类型
我自己创建了一个usercontrol,里面就放了checkbox,但是发现使用时有问题,
1.当我直接点击加载的时候,不会立刻出现在单元格中,似乎要点击好几次,自定义控件才会出现在单元格中
2.当我自定义控件出现在单元格时,发现点击别的单元格时失效,只有我在挪动滚动条时才可以点击其他单元格,但是这时我新建的自定义的单元格里面的usercontrol消失

想确认下是我使用的有问题还是....?
我使用的是VS2005+spread5.0

先谢了

15 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-1-24 17:13:00
沙发
回复 1楼Hjr2350的帖子

能发个能运行的例子我调试以下吗。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-1-24 17:43:00
板凳
添付给你看一下
WindowsApplication7.zip (54.11 KB, 下载次数: 1896)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-1-25 09:54:00
地板
回复 3楼Hjr2350的帖子

请尝试一下代码,在 CheckBox 选择后,撤销 Spread 的编辑状态:

  1.   private void fpSpread1_EditModeOn(object sender, EventArgs e)
  2.         {
  3.             UserControl1 uc = this.fpSpread1.EditingControl as UserControl1;
  4.             CheckBox ck = uc.Controls[0] as CheckBox;
  5.             ck.CheckedChanged += new EventHandler(ck_CheckedChanged);
  6.         }

  7.         void ck_CheckedChanged(object sender, EventArgs e)
  8.         {
  9.             this.fpSpread1.EditMode = false;
  10.         }
复制代码
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-1-25 11:41:00
5#
很好用谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-1-25 11:47:00
6#
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-1-25 14:10:00
7#
回复 6楼iceman的帖子

>>1.当我直接点击加载的时候,不会立刻出现在单元格中,似乎要点击好几次,自定义控件才会出现在单元格中

感谢iceman帮助,但是似乎还是有些问题,好像现在这种加载自定义控件的机制,还是有些不足;
第一个问题还是存在.
而且如果按照iceman的方法(设定editmode=false),自定义控件在使用完后,自定义控件会消失,单元格显示为空白,感觉很奇怪

还请各位大大,帮帮我解决一下
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-1-25 16:01:00
8#
回复 7楼Hjr2350的帖子

Hir2350 你好,

问题一,我使用的是 Spread .NET 6在我这边没有出现“点击几次才出现 Editor " 现象。
问题二,可以在自定义控件小时之前,设置单元格值:

  1.   void ck_CheckedChanged(object sender, EventArgs e)
  2.         {
  3.             CheckBox ck = sender as CheckBox;

  4.             this.fpSpread1.Sheets[0].ActiveCell.Text = ck.Checked.ToString();

  5.             this.fpSpread1.EditMode = false;
  6.         }
复制代码

请问为什么使用自定义 CheckBox 控件?Spread 本身支持 CheckBoxCellType ,支持三态选择,请使用以下代码测试:

  1. private void Form2_Load(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.CellType.CheckBoxCellType ckbxcell = new FarPoint.Win.Spread.CellType.CheckBoxCellType();

  4.             ckbxcell.ThreeState = true;

  5.             ckbxcell.TextTrue = "Checked";

  6.             ckbxcell.TextFalse = "Unchecked";

  7.             ckbxcell.TextIndeterminate = "Not Sure";

  8.             fpSpread1.ActiveSheet.Cells[0, 0].CellType = ckbxcell;

  9.         }
复制代码
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-1-25 16:32:00
9#
我现在测试用的是.NET 5.0+VS2005,用C#里面的checkbox主要是为了测试spread自定义控件的使用

其实我想做的效果是利用c#中的richtextbox来实现某些效果(如行间距的设定),我可以把我现在的测试代码给你看一下.
这个代码暂时没有添加你发给我的editmode=false
在点击btn1时,对cells[0,0]设置自定义单元格属性(使用自定义的用户控件),但是usercontrol没有正常显示出来,
当拖动滚动条时(editmode=false),刚才显示的usercontrol又消失了
这个我暂时没有用6.0做测试,但是感觉这个情况很古怪....
PS:添付我这的测试代码和录像,我们使用的录像软件是webex,同样添付了它的安装文件
给BZ添麻烦了,谢谢先
Test_Demo.zip (3.4 MB, 下载次数: 991)
回复 使用道具 举报
wangmj
论坛元老   /  发表于:2013-1-25 17:51:00
10#
借宝地问个类似的问题,我做了个自定义单元格属性(也就是在一个单元格里面显示2个checkbox),应用后,只有在编辑状态下才能看到那两个Checkbox,非编辑状态下是空白的。 根据我自己的理解,好像是应该重写 PaintCell 方法。但这个方法没有把 自定义控件 显示出来的 属性啊。 不知 哪位大侠 能帮我解答一下啊。  跪求了  。 (vs2005 + spread for win 3.0 )
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部