Avatar billede jesperthomsen1980 Nybegynder
26. januar 2005 - 20:22 Der er 7 kommentarer og
1 løsning

Endelig færdig, men stadig et underlidt problem som fryser prg.

Hej eksperter.

Jeg er endelig blevet færdigt med et lagerstyringssystem, men programmet har desværre en bug.
Jeg har oprettet et datagrid, og har en mouseavent, som gør det muligt at få fat i Id'en tilhørende den markede post i datagriddet. Hvis man så trykker på datagriddet et sted hvor der ikke er en post, så fryser programmet, og jeg er nød til at genstarter.

Jeg tror det har noget med nedenstående kode at gøre, men er absolut ikke sikker. Dog vil alle forslag blive modtaget med glæde.
Avatar billede jesperthomsen1980 Nybegynder
26. januar 2005 - 20:23 #1
Public Sub dataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseUp
        Dim pt = New Point(e.X, e.Y)
        Dim hti As DataGrid.HitTestInfo = DataGrid1.HitTest(pt)
        DataGrid1.CurrentCell = New DataGridCell(hti.Row, hti.Column)
        DataGrid1.Select(hti.Row)
        Dim pt2 = New Point(e.X, e.Y)
        Dim hti2 As DataGrid.HitTestInfo = DataGrid1.HitTest(pt2)
        If hti2.Type = DataGrid.HitTestType.Cell Then
            TextBox3.Text = (DataGrid1(hti2.Row, 0).ToString())
        End If
Avatar billede jesperthomsen1980 Nybegynder
26. januar 2005 - 20:24 #2
Det er et eksempel jeg har fundet, og det det virker, sådan da, har jeg ikke lige sat mig ind i hvad det gør helt præcist, og derfor kan jeg ikke selv løse dette problem.

Nogen forslag?
Avatar billede jesperthomsen1980 Nybegynder
26. januar 2005 - 20:25 #3
Additional information: Index was outside the bounds of the array.
Avatar billede burningice Nybegynder
26. januar 2005 - 23:03 #4
du bør nok også lave en test på din HitTestInfo før DataGrid1.CurentCell

Public Sub dataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseUp
        Dim pt = New Point(e.X, e.Y)
        Dim hti As DataGrid.HitTestInfo = DataGrid1.HitTest(pt)
       
        If hti.Type = DataGrid.HitTestType.Cell Then
        DataGrid1.CurrentCell = New DataGridCell(hti.Row, hti.Column)
        Else
            Return
        End If

        DataGrid1.Select(hti.Row)
        Dim pt2 = New Point(e.X, e.Y)
        Dim hti2 As DataGrid.HitTestInfo = DataGrid1.HitTest(pt2)
       
        If hti2.Type = DataGrid.HitTestType.Cell Then
            TextBox3.Text = (DataGrid1(hti2.Row, 0).ToString())
        Else
            Return
        End If
End Sub
Avatar billede jesperthomsen1980 Nybegynder
27. januar 2005 - 09:07 #5
hmm det virker sgu - tak for hjælpen. Det var et stort problem jeg fik løst :-)

Smid lige et svar og du skal have dine fortjente points...
Avatar billede burningice Nybegynder
27. januar 2005 - 10:28 #6
:) svar
Avatar billede burningice Nybegynder
27. januar 2005 - 10:29 #7
hvorfor er det forresten at du laver to hittests på det samme punkt?
Avatar billede jesperthomsen1980 Nybegynder
27. januar 2005 - 10:41 #8
Ja det kan vel egentlig skrives om til én. Meningen var at den ene markerer hele posten og den anden får fat på det Id jeg skal bruge for at arbejde videre med den markede post...

Men jeg prøver lige at skrive det om til ën i stedet...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester