找回密码
 立即注册

QQ登录

只需一步,快速开始

yrpting

中级会员

4

主题

13

帖子

625

积分

中级会员

积分
625

活字格认证

最新发帖
yrpting
中级会员   /  发表于:2013-4-13 17:57  /   查看:7360  /  回复:8
spread行變得時候能触发什么事件?
目前想实现的功能是:
在spread的某一行移动的时候,对该行的某列(A列)进行合计,当光标移出该行时,进行该行的A列的值check,如果是0才能移出本行,否则不能移出,有什么方法吗?
谢谢!!!!
Windows xp,Spread for .net 3.0.2025.2005,VisualStudio 2008

8 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-4-15 15:41:00
沙发
回复 1楼yrpting的帖子

参考代码如下:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.AllowRowMove = true;
  4.             this.fpSpread1.RowDragMove += new FarPoint.Win.Spread.DragMoveEventHandler(fpSpread1_RowDragMove);
  5.         }

  6.         void fpSpread1_RowDragMove(object sender, FarPoint.Win.Spread.DragMoveEventArgs e)
  7.         {
  8.             int row = e.Index;

  9.             if (this.fpSpread1.ActiveSheet.Cells[row,0].Text=="0")
  10.             {

  11.             }
  12.             else
  13.             {
  14.                 e.Cancel = true;
  15.             }
  16.         }
复制代码
回复 使用道具 举报
yrpting
中级会员   /  发表于:2013-4-15 17:20:00
板凳
谢谢版主,但是不知道为什么事件不能触发,我用的是vb.net,下面是代码,请版主帮忙看一下,哪里不对,谢谢
  1. Public Class Form1

  2.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  3.         Me.FpSpread1.AllowRowMove = True
  4.     End Sub

  5.     Private Sub FpSpread1_RowDragMove(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.DragMoveEventArgs) Handles FpSpread1.RowDragMove
  6.         MsgBox("aa")
  7.     End Sub
  8. End Class
复制代码


我知道这个事件的用处了,我写的问题太模糊了,想要实现的不是这个,而是:
当光标在spread的某一行移动的时候,对该行的某列(A列)进行合计,当光标移出该行时,进行该行的A列的值check,如果是0才能移出本行,否则不能移出,有什么方法吗?

例:
spread有两行(RA,RB)三列(CA,CB,CC)且光标此时在RACA,
当光标在RA这一行中移动时,进行RARC的合计,当光标移到RB行时,进行RARC的check,如果为0,就移到RB行,否则,光标不能移动

这样能通过事件实现吗?
回复 使用道具 举报
yrpting
中级会员   /  发表于:2013-4-15 17:50:00
地板
回复 2楼iceman的帖子

谢谢版主,但是不知道为什么事件不能触发,我用的是vb.net,下面是代码,请版主帮忙看一下,哪里不对,谢谢Public Class Form1



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.FpSpread1.AllowRowMove = True

    End Sub



    Private Sub FpSpread1_RowDragMove(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.DragMoveEventArgs) Handles FpSpread1.RowDragMove

        MsgBox("aa")

    End Sub

End Class

复制代码我知道这个事件的用处了,我写的问题太模糊了,想要实现的不是这个,而是:
当光标在spread的某一行移动的时候,对该行的某列(A列)进行合计,当光标移出该行时,进行该行的A列的值check,如果是0才能移出本行,否则不能移出,有什么方法吗?

例:
spread有两行(RA,RB)三列(CA,CB,CC)且光标此时在RACA,
当光标在RA这一行中移动时,进行RARC的合计,当光标移到RB行时,进行RARC的check,如果为0,就移到RB行,否则,光标不能移动

这样能通过事件实现吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-4-15 18:08:00
5#
回复 4楼yrpting的帖子

yrpting 你好,
感谢你的问题反馈,能否把 Demo 发到论坛便于测试?
回复 使用道具 举报
yrpting
中级会员   /  发表于:2013-4-15 20:28:00
6#
回复 5楼iceman的帖子

额。。。弱弱的问一下 demo是什么?代码吗?附件是代码,简单的说了一下,不知道能不能通过事件简单的实现,请帮忙看一下,谢谢!!!

test.zip

36.31 KB, 下载次数: 1011

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-4-16 16:28:00
7#
回复 6楼yrpting的帖子

yrpting 你好,
请尝试以下代码:

  1.     Dim preRow As Integer
  2.     Dim preCol As Integer
  3.     Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff

  4.         '将总额-账户1-账户2-账户3赋值给剩余
  5.         Me.FpSpread1.ActiveSheet.Cells(Me.FpSpread1.ActiveSheet.ActiveRowIndex, 3).Text = _
  6.                              CDec(Me.FpSpread1.ActiveSheet.Cells(Me.FpSpread1.ActiveSheet.ActiveRowIndex, 0).Value) - _
  7.                              CDec(Me.FpSpread1.ActiveSheet.Cells(Me.FpSpread1.ActiveSheet.ActiveRowIndex, 1).Value) - _
  8.                              CDec(Me.FpSpread1.ActiveSheet.Cells(Me.FpSpread1.ActiveSheet.ActiveRowIndex, 2).Value)
  9.         preRow = Me.FpSpread1.ActiveSheet.ActiveCell.Row.Index
  10.         preCol = Me.FpSpread1.ActiveSheet.ActiveCell.Column.Index


  11.     End Sub



  12.     Private Sub FpSpread1_EditModeOn(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
  13.         
  14.     End Sub

  15.     Private Sub FpSpread1_CellClick(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.CellClickEventArgs) Handles FpSpread1.CellClick

  16.         If e.Row <> preRow Then

  17.             If Me.FpSpread1.ActiveSheet.Cells(preRow, 3).Text <> "0" Then

  18.                 e.Cancel = True

  19.             End If

  20.         End If

  21.     End Sub
  22. End Class
复制代码
回复 使用道具 举报
yrpting
中级会员   /  发表于:2013-4-16 17:54:00
8#
回复 7楼iceman的帖子

谢谢版主!!!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-4-16 18:02:00
9#
回复 8楼yrpting的帖子

客气了,感谢你的支持
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部