各位大侠:
    你们好,先提前给大家拜年了。祝大家新年快乐,心想事成!
    有个问题比较困扰我:
    在使用mshflexgrid控件时,用到了双击事件,在这个事件过程中,需要判断双击了哪行哪列,据我所知,这个控件的行列计数应该都是从0开始吧,而这个0是不是应该从固定行列算起(程序中我设置了一个固定行和一个固定列)?但我在调试程序时发现双击固定行列(这时是不是应该算是第0行0列呀?)时也会执行操作(我的代码是当行列值大于等于1时才允许执行语句),不知为什么?哪位大侠能给我个圆满的解答,尽量详细些,最好有代码。谢谢!!!

解决方案 »

  1.   

    不知道你代码怎么获取当前行或列的,下面这样应该没问题吧:Private Sub MSHFlexGrid1_Click()
        
        Dim myRow As Long
        Dim myCol As Long
        
        myRow = MSHFlexGrid1.MouseRow
        myCol = MSHFlexGrid1.MouseCol
        
        If myRow = 0 Or myCol = 0 Then Exit Sub
        
        MsgBox MSHFlexGrid1.TextMatrix(myRow, myCol)
        
    End Sub
      

  2.   

    Private Sub Form_Load()
    MSHFlexGrid1.Cols = 10
    MSHFlexGrid1.Rows = 10
    For i = 0 To MSHFlexGrid1.Rows - 1
    For j = 0 To MSHFlexGrid1.Cols - 1
    MSHFlexGrid1.TextMatrix(i, j) = i * jNext
    NextEnd SubPrivate Sub MSHFlexGrid1_DblClick()
    MsgBox "行数=" & MSHFlexGrid1.Row & " " & "列数=" & MSHFlexGrid1.Col
    End Sub
      

  3.   


    先表示感谢:第一时间给我回复。我再说一下我的程序:
    我想在双击这个控件的第一行(不是固定行,调试时ROW=1)或最后一行时,会弹出一个窗体,现在通过判断语句可以实现,但我发现在双击固定行时也会执行这个功能,用断点调试发现双击固定行时,发现这时ROW的值也是1,所以很郁闷。部分代码如下:
    private sub mshflextgrid_dblclick()
      if mshflextgrid.row=1 and mshflextgrid.col>0 or mshflextgrid.row=mshflextgrid.rows and mshflextgrid.col>0 then
      其它执行语句
      ……
    end sub
      

  4.   

    private sub mshflextgrid_dblclick() 
        with mshfextgrid
            if .col>0 then
                if .row>0 then
                    '其他执行语句
                 end if
            end if
        end with
    end sub
      

  5.   

    我回复很清楚了,不能if mshflextgrid.row=1 and mshflextgrid.col>0 ...这样判断
    既然是lClick事件,取鼠标所在行列为当前行列:
    myRow = MSHFlexGrid1.MouseRow
    myCol = MSHFlexGrid1.MouseCol
    然后if myRow=1 and mycol>0 ...这样判断
      

  6.   

    答案
    Private Sub MSHFlexGrid1_DblClick()
    If MSHFlexGrid1.MouseRow > 0 And MSHFlexGrid1.MouseCol > 0 Then
    MsgBox "行数=" & MSHFlexGrid1.Row & " " & "列数=" & MSHFlexGrid1.ColEnd If
    End Sub