假如下面的图是MSHFlexGrid控件,比如双击一下第1行或第2行,msgbox ””你单击了” & MSHFlexGrid.row”
可是,我双击空白处的地方,还是会显示*你单击了第2 行的提示*
希望哪位高手,能帮帮忙.双击空白处的地方,不响应任何事件.
还有如何使MSHFlexGrid的失去焦点,谢谢!
--------------------------|
1  AAAAAAAAAAAAAAAAAAAAAAA| 
--------------------------|
2  BBBBBBBBBBBBBBBBBBBBBBB|
--------------------------|
空白空白空白空白空白空白空白空|                         
空白空白空白空白空白空白空白空|
--------------------------|

解决方案 »

  1.   

    很简单,你可以根据MSHFlexGrid控件的行宽 X  行数算出整个表的宽,再用列高 X 列数算出整个表的高,这样当鼠标点击时进行判断,如果鼠标的坐标不在这个区域内就不做响应即可.下面的Code你可以试一下:
    Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim i As Integer
        Dim iX As Integer
        Dim iY As Integer
        With MSHFlexGrid1
                iX = MSHFlexGrid1.ColWidth(1) * .Cols
                iY = MSHFlexGrid1.RowHeight(i) * .Rows
                 If x > iX Or y > iY Then
                .Row = 0
                .RowSel = 0
                .Col = 0
                .ColSel = 0
                End If
        End With
    End Sub
      

  2.   

    Private Sub MSFlexGrid1_DblClick()
    Dim c As Integer, r As Integer
    With MSFlexGrid1
    c = .Col
    r = .Row
    If c > -1 And r > -1 Then
    MsgBox r
    End If
    End With
    End Sub
    有个缺点,双击0行与第1行都是1,要上班了,没时间了
      

  3.   

    Dim P As BooleanPrivate Sub Form_Load()
    P = False
    End SubPrivate Sub MSHFlexGrid1_DblClick()
    With MSHFlexGrid1
        If P Then MsgBox .Row
    End With
    End SubPrivate Sub MSHFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    With MSHFlexGrid1
        If y > .RowPos(.Rows - 1) + .RowHeight(.Rows - 1) Then P = False Else P = True
    End With
    End Sub
      

  4.   

    问题就出在你不该使用Click或DblClick(因为这个控件鼠标和按键都会激发Click事件),除非你去做位置判断你为何要控制焦点?这不是好的风格的,如果你的焦点事件过多,可能会有意想不到的收获。你可以将窗体的控件的TabIndex设置一下,将msflexgrid的稍大点儿,然后在代码最后加上form.setfocus
      

  5.   

    chuifengde谢谢你的帮忙,也谢谢大家的帮忙!
    在chuifengde的帮助下,问题已解决!谢谢!
      

  6.   

    楼主,怎么解决的,求代码啊,不要vb的有没有java的