找回密码
 立即注册

QQ登录

只需一步,快速开始

keaitutu

注册会员

11

主题

33

帖子

94

积分

注册会员

积分
94

活字格认证

keaitutu
注册会员   /  发表于:2015-8-13 20:20  /   查看:11760  /  回复:14
spread的单元格都设置成Locked=true 以后,选中某一个单元格默认周围有一个黑色的边框,边框里的样色可以修改吗?

14 个回复

正序浏览
frank.zhang
社区贡献组   /  发表于:2015-8-17 17:47:00
15#
您好,问题已经解决,本帖关闭,如有其它问题,请开新帖。

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢

评分

参与人数 1满意度 +5 收起 理由
keaitutu + 5 很感谢

查看全部评分

回复 使用道具 举报
keaitutu
注册会员   /  发表于:2015-8-17 17:40:00
14#
多谢两位大侠,用10#的方法已经解决,感谢两位。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-17 17:24:00
13#
回复 12楼rbgongming的帖子

哈哈,
你的实现方法确实可以。
回复 使用道具 举报
rbgongming
论坛元老   /  发表于:2015-8-17 15:00:00
12#
回复 11楼frank.zhang的帖子

10#的办法应该可以解决的,我试过了。
而且代码简单。:Z

评分

参与人数 1金币 +500 收起 理由
frank.zhang + 500 优质解决方案

查看全部评分

把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-17 14:51:00
11#
回复 9楼keaitutu的帖子

您好,实现的思路是在SelectionChanged中判断单元格的类型,然后记录下来位置,离开的时候,再将颜色清除。
  1.         private int x, y;
  2.         public Form5()
  3.         {
  4.             InitializeComponent();
  5.             this.fpSpread1.SelectionChanged += new FarPoint.Win.Spread.SelectionChangedEventHandler(fpSpread1_SelectionChanged);
  6.             x = 0;
  7.             y = 0;
  8.         }

  9.         void fpSpread1_SelectionChanged(object sender, FarPoint.Win.Spread.SelectionChangedEventArgs e)
  10.         {
  11.             FarPoint.Win.Spread.Model.CellRange cr;
  12.             cr = e.View.Sheets[0].GetSelection(0);
  13.             this.fpSpread1.ActiveSheet.Cells[x, y].BackColor = Color.White;
  14.             if (this.fpSpread1.ActiveSheet.Cells[cr.Row, cr.Column].Locked)
  15.             {
  16.                 this.fpSpread1.ActiveSheet.Cells[cr.Row, cr.Column].BackColor = Color.Red;
  17.                 x = cr.Row;
  18.                 y = cr.Column;
  19.             }
  20.         }
复制代码


需要指出的是,以上实现的方法有一些边界条件没有判断,需要根据实际情况进行处理。
回复 使用道具 举报
rbgongming
论坛元老   /  发表于:2015-8-17 13:47:00
10#
回复 9楼keaitutu的帖子

理解了你想要的功能,请尝试如下代码:
Private Sub FpSpread1_LeaveCell(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.LeaveCellEventArgs) Handles FpSpread1.LeaveCell
        '移動前セルの背景色をリセットします
        FpSpread1.ActiveSheet.Cells(e.Row, e.Column).ResetBackColor()
        '移動後セルの背景色を設定します
        FpSpread1.ActiveSheet.Cells(e.NewRow, e.NewColumn).BackColor = Color.SkyBlue
    End Sub

评分

参与人数 1金币 +500 收起 理由
frank.zhang + 500 协助回答问题

查看全部评分

把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
keaitutu
注册会员   /  发表于:2015-8-17 13:27:00
9#
想实现下图的效果
13.png (8.53 KB, 下载次数: 349)
回复 使用道具 举报
rbgongming
论坛元老   /  发表于:2015-8-17 10:45:00
8#
回复 7楼keaitutu的帖子

亲,你想要实现什么样的效果呢?可以说清楚一点吗?
把你想要的效果在表达一下可以吗?
把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
keaitutu
注册会员   /  发表于:2015-8-17 09:36:00
7#
@rbgongming , 你好,我的整个spread是只读的,要设置locked的话,也是所有单元格都是locked。就是想改变系统默认的locked属性指定的效果(单元格周围有黑框,但是没有背景色)
            for (int n = 0; n < this.sheet.MaxColumns; n++)
            {
                this.sheet.Columns[n].Locked = true;
            }
            this.sheet.ActiveSheet.LockBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部