1

マウスが datagridview の内側/外側にあるかどうかを確認したいと思います。マウスを外に持っていた場合、タイマー コードを実行してカウントダウンを開始してから、datagridview を非表示にする必要があります (私の例では 2 秒)。内部にある場合、タイマーは非表示にならないようにカウンターを 0 にリセットする必要があります。私のデータグリッドビュー..

以下は私のタイマーのコードです.. 100間隔

Private ctme As Integer = 0
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If DataGridView1.Visible = False Then ctme = 0 : Exit Sub
        If Not DataGridView1.Bounds.Contains(PointToClient(Cursor.Position)) Then
            ctme = ctme + 1
            If ctme >= 20 Then
                ctme = 0
                DataGridView1.Visible = False
            End If
        Else
            ctme = 0
        End If
    End Sub

私が試してみました

Datagridview1.ClientRectangle.Contains(PointtoClient(Cursor.Position))

代わりに

Datagridview1.Bounds.Contains(PointtoClient(Cursor.Position))

しかし、それでもうまくいきません..

あなたがこれで私を助けてくれることを願っています..

4

2 に答える 2

1

MouseEnter (マウス ポインターがコントロールに入ったときに発生) およびMouseLeave (マウス ポインターがコントロールから離れたときに発生) イベントを使用できます。

これを使用すると、ソリューションははるかに簡単になります。

Private Sub DataGridView1_MouseEnter(sender As Object, e As EventArgs) Handles DataGridView1.MouseEnter
    Timer1.Stop()
End Sub

Private Sub DataGridView1_MouseLeave(sender As Object, e As EventArgs) Handles DataGridView1.MouseLeave
    Timer1.Start()
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Timer1.Interval = 2000
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    DataGridView1.Visible = False
End Sub
于 2013-06-14T08:55:29.037 に答える
-1

各イベントでこれに:

マウスエンター

Timer1.Stop()

マウスリーブ

 Timer1.Start()

Form1_Load

Timer1.Interval = 2000

Timer1.Tick

DataGridView1.Visible = False
于 2013-08-28T03:49:56.083 に答える