找回密码
 立即注册

QQ登录

只需一步,快速开始

h465716405

中级会员

6

主题

17

帖子

535

积分

中级会员

积分
535

活字格认证

h465716405
中级会员   /  发表于:2012-8-20 15:15  /   查看:6287  /  回复:6
您好,今天遇到这么个问题:
我们用的是spread6.0,其中有一列是下拉框,将这一列其中的一个单元格聚焦,然后在离开焦点的时候就会触发spread 的Change事件,请问这是为什么呢?

6 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-20 16:29:00
沙发
这应该和你的设置有关,比如,只是有下面的代码,就不会出发Change事件,如果需要,可以将你的程序发来我们调试一下:
  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         FarPoint.Win.Spread.CellType.ComboBoxCellType cbct = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
  4.         cbct.Items = new string[] { "AA", "BB", "CC", "DD" };

  5.         fpSpread1.ActiveSheet.Columns[2].CellType = cbct;
  6.     }

  7.     private void fpSpread1_Change(object sender, FarPoint.Win.Spread.ChangeEventArgs e)
  8.     {

  9.     }
复制代码
回复 使用道具 举报
h465716405
中级会员   /  发表于:2012-8-20 18:11:00
板凳
您好,不好意思,我没表达清除,是这样的。先将其中的一个单元格选定一个值,在离开焦点的时候会触发Change事件,然后在多选框列的另一个单元格上点一下,但不选定任何内容,也会触发Change事件,其实下拉框的值没发生任何改动。麻烦您再看一下,谢谢。
回复 使用道具 举报
h465716405
中级会员   /  发表于:2012-8-20 18:12:00
地板
代码如下:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim cbct As FarPoint.Win.Spread.CellType.ComboBoxCellType
        cbct = New FarPoint.Win.Spread.CellType.ComboBoxCellType()

        cbct.Items = New String() {"AA", "BB", "CC", "DD"}



        FpSpread1.ActiveSheet.Columns(0).CellType = cbct
    End Sub

    Private Sub FpSpread1_Change(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.ChangeEventArgs) Handles FpSpread1.Change
        MessageBox.Show("aasdf")
    End Sub
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-21 14:28:00
5#
h465716405 你好

在Spread中如果给整理设置同一个ComboBoxCellType,只要其中一个单元格的值发生改变,再次点击该列中任意一个单元格,如果没有选择ComboBox中的任何一个值,但是此时已经修改了单元格的值,点击之前的值是 nothing,点击之后是 "",所以处罚了change事件。
回复 使用道具 举报
h465716405
中级会员   /  发表于:2012-8-21 14:52:00
6#
可是我怎么做才能不让它触发那个Change事件呢??
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-21 17:57:00
7#
可以尝试在Load事件中将Value为Nothing的都设置为""
  1.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.         Dim cbct As FarPoint.Win.Spread.CellType.ComboBoxCellType
  3.         cbct = New FarPoint.Win.Spread.CellType.ComboBoxCellType()
  4.         cbct.Items = New String() {"AA", "BB", "CC", "DD"}
  5.         FpSpread1.ActiveSheet.Columns(0).CellType = cbct

  6.         FpSpread1.ActiveSheet.RowCount = 10

  7.         FpSpread1.ActiveSheet.Cells(0, 0).Value = "BB"

  8.         For index As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
  9.             If FpSpread1.ActiveSheet.Cells(index, 0).Value Is Nothing Then
  10.                 FpSpread1.ActiveSheet.Cells(index, 0).Value = ""
  11.             End If            
  12.         Next
  13.     End Sub
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部