Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB.Net] DataGridView, DragDrop ja kohderivin valinta

Sivun loppuun

novice [07.01.2010 20:11:23]

#

DataGridViewissä rivi raahataan saman dgv:n toiselle riville, mutta raahauksen (DragDrop eventin) jälkeen tulee LÄHDErivi aina valituksi. Ilmeisesti siksi, että lähderivin klikkaus suoritetaan loppuun vasta kun hiiren nappi nostetaan ylös... joka tapahtuu vasta kohderivin päällä DragDrop eventin jälkeen.

Eli miten saisin Kohderivin valituksi heti rivin siirron jälkeen?

novice [07.01.2010 23:33:07]

#

Käy myös vaihtoehto jossa ei ole mitään valittuna.

groovyb [08.01.2010 09:17:53]

#

dataGridView1.Rows[lähderivi].Selected = false 'voi olla että pelkkä tämäkin riittää
dataGridView1.Rows[haluamasirivi].Selected = true 'käytä lukemaksi riviä jonka saat dragndropin yhteydessä, valitsee kohderivin
dataGridView1.FirstDisplayedScrollingRowIndex = haluamasirivi 'Siirtää sen pikkuisen mustan nuolen kohderiviin

novice [08.01.2010 10:30:11]

#

Olen jo noita kaikkia kokeillut DragDrop eventin lopussa, muuta ei auta <- syytä epäilen tuossa aloitusviestissä.

groovyb [08.01.2010 12:09:33]

#

kirjotappa se koodi mikä sulla on siinä eventissä

novice [08.01.2010 13:15:12]

#

Tuossa DragDrop Eventti

Private Sub dgvMakasiini_DragDrop(ByVal sender As System.Object, ByVal e As DragEventArgs)
        Dim tklID As Integer = Convert.ToInt32(e.Data.GetData(Type.GetType("System.Int32")))
        Console.WriteLine(sender.name & " tklID: " & tklID)

        Dim dgv As DataGridView = sender
        Dim clientPoint As Point = dgv.PointToClient(New Point(e.X, e.Y))

        Dim hit As DataGridView.HitTestInfo = dgv.HitTest(clientPoint.X, clientPoint.Y)
        Dim KohdeRivi As Integer = hit.RowIndex
        If KohdeRivi <= -1 Then Exit Sub


        If dgv.Rows(KohdeRivi).Cells(0).Value IsNot DBNull.Value Then
            If dgv.Rows(KohdeRivi).Cells(0).Value = tklID Then Exit Sub

            If MessageBox.Show("Paikalla " & KohdeRivi + 1 & " on jo työkalu." & vbCrLf & "Poistetaanko se makasiinista?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) = DialogResult.Yes Then
                Call DsLista_MuutaPaikallaArvoa(dgv.Rows(KohdeRivi).Cells(0).Value, Nothing)
            Else
                Exit Sub
            End If
        End If

        Call DsLista_MuutaPaikallaArvoa(tklID, KohdeRivi + 1)
        Call DgvMakasiini_Päivitä()

        dgv.CurrentCell = dgv(0, KohdeRivi) 'Kohderivin valinta

    End Sub

Edit:

Tämän eventin jälkeen ohjelmahan hyppää takaisin MouseDown eventtiin(josta sitä on kutsuttu) ja suorittaa sen loppuun, mutta kohderivin valinta sielläkään ei auta mitään.

groovyb [08.01.2010 15:44:48]

#

kokeile tehdä rivin valinta MouseUp eventissä, se triggaa MouseDownin jälkeen.

novice [08.01.2010 17:05:20]

#

Kokeiltu on... ei auta.

novice [08.01.2010 22:50:24]

#

Tarkennan vielä, että MouseUp eventti ei edes käynnisty DragDrop eventin jälkeen.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta