2017-09-24 10 views
0

Y at-il quelqu'un/expert qui peut m'aider à obtenir ces valeurs manquantes qui ne peuvent pas être capturées sur l'événement mousemove?Comment remplir les valeurs manquantes qui ne peuvent pas être capturées sur l'événement MouseMove?

La vidéo de mon projet. [View]

Mon idée est là de toute façon dans laquelle nous pouvons obtenir les valeurs manquantes comme,

For Each i as even row index and j as odd row index 
    If i - j > 2 
     Do Until j = i 
      dgv.rows.insert()'code that will increase by +1 

Pour déterminer l'indice de ligne, nous pouvons dire

If i Mod 2 = 0 Then 
    'even 
Else 
    'Odd 
End If 

Encore une fois, ce n'est pas une vrai code. J'essayais juste d'illustrer mon idée.

Code Forme:

Public Class Form1 
    Dim drag As Boolean 
    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove 
     If Not drag Then 
      Exit Sub 
     End If 
     dgv.Rows.Add((MousePosition.X - Me.Left - 8).ToString, (MousePosition.Y - Me.Top - 34).ToString) 
    End Sub 

    Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown 
     drag = True 
    End Sub 

    Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp 
     drag = False 
     Dim img As Bitmap = New Bitmap(Me.Width, Me.Height) 
     Dim gfx As Graphics = Graphics.FromImage(img) 
     For i As Integer = 0 To dgv.RowCount - 1 
      gfx.FillEllipse(Brushes.Black, Convert.ToInt32(dgv.Rows(i).Cells(0).Value), Convert.ToInt32(dgv.Rows(i).Cells(1).Value), 5, 5) 
     Next 
     PictureBox1.Image = img 
    End Sub 
End Class 

capture d'écran d'application:
enter image description here

+0

Quelles sont les valeurs manquantes? Ne nous faites pas sortir du site et regarder une vidéo quand vous pouvez simplement écrire une description complète et claire ici. – jmcilhinney

+1

D'accord, je suis mise à jour avec le code. Mais je pensais que fournir une vidéo est un bon moyen d'expliquer le problème. –

+1

Ok, vous pouvez vérifier maintenant. J'ai mis à jour la question. –

Répondre

3

Ok!

Tout d'abord merci à tous pour vos commentaires (Suggestions). Finalement, j'ai trouvé la solution pour me débarrasser de ce problème. Je n'ai pas trouvé cette solution ni aucune similaire en effectuant une recherche sur le net à l'exception de la page Support de Microsoft pour dessiner des courbes. J'espère que cette solution aidera beaucoup de futurs lecteurs à surmonter les tirets tout en tirant sur l'événement MouseMove. Alors, sans plus tarder, permettez-moi de vous fournir la solution.

Code Solution:

Public Class Form2 
Dim drag As Boolean 
Dim img As Bitmap = New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height) 
Dim gfx As Graphics = Graphics.FromImage(img) 
Dim imgPartial As Bitmap = New Bitmap(img) 
Dim gfxPartial As Graphics = Graphics.FromImage(imgPartial) 

Dim mouseX As Integer 
Dim mouseY As Integer 
Dim fixCurve() As Point 
Dim redPen As New Pen(Color.Red, 3) 
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove, Panel1.MouseMove 
    If drag Then 

     mouseX = (MousePosition.X - Me.Left - 8) 
     mouseY = (MousePosition.Y - Me.Top - 34) 
     gfxPartial.FillEllipse(Brushes.Red, MousePosition.X - Me.Left - 8, (MousePosition.Y - Me.Top - 34), 3, 3) 
     PictureBox1.Image = imgPartial 
     fixCurve(UBound(fixCurve)) = New Point(mouseX, mouseY) 
     ReDim Preserve fixCurve(UBound(fixCurve) + 1) 
    End If 
End Sub 
Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown, Panel1.MouseDown 
    drag = True 
End Sub 

Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp, Panel1.MouseUp 
    drag = False 
    'Here's the magic begin!!! 
    ReDim Preserve fixCurve(fixCurve.Length - 2) 
    gfx.DrawCurve(redPen, fixCurve) 
    PictureBox1.Image = img 
    gfxPartial.Clear(Color.White) 
    gfxPartial.DrawImage(img, New Point(0, 0)) 
    ReDim fixCurve(0) 
End Sub 

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load 
     ReDim fixCurve(0) 
    End Sub 
End Class 

Avantages:

Cette solution permet de surmonter l'utilisation de DataGridView et au lieu qu'il utilise la fonction des tableaux pour stocker les positions de la souris.