Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    66

    [VB.net] Click destro del mouse

    Salve, volevo fare in modo che in seguito al click del mouse destro su una dgv, si apra un contextmenustrip con le opzioni modifica,elimina,ecc relative alla riga selezionata. Ora, il mio problema è che prima del click destro per selezionare la riga devo cliccare il sinistro in modo che venga selezionata la riga. Nel caso cliccassi subito col destro mi dice "riferimento a un oggetto non impostato su un'istanza di oggetto", quindi significa che il codice che ho scritto non basta per "selezionare" la riga. Sapete consigliarmi qualcosa? Questo è il mio codice:

    codice:
     Private Sub dgvScadenze_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgvScadenze.MouseDown
    
            Try
    
    
                If e.Button = Windows.Forms.MouseButtons.Right Then
    
    
                    'Recupero l'index della riga in corrispondenza della posizione del puntatore
                    Dim rowindex As Integer = Me.dgvScadenze.HitTest(e.X, e.Y).RowIndex
                    Me.dgvScadenze.Rows(rowindex).Selected = True
                    If rowindex <> -1 Then
                        Me.ctxMenu.Show(Me.dgvScadenze, e.X, e.Y)
                        ID_Scadenza = CIntN(Me.dgvScadenze.Rows(rowindex).Cells("ID_Scadenza").Value)
                    End If
    
    
                End If
    
    
            Catch ex As Exception
                Messaggi.TryCatch("frm_Scadenze_Sel", MethodBase.GetCurrentMethod, ex)
            End Try
    
    
        End Sub

  2. #2
    Ho fatto un copia / incolla del tuo codice in un form (senza il Try / Catch) con dgv e contextmenu e funziona perfettamente: cliccando destro si seleziona tutta la riga, appare il menu e ID_Scadenza prende il valore corretto.

    Ho dichiarato ID_Scadenza come Integer e corretto CIntN (??) in Cint.

    Di più non so.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    66
    Grazie della risposta ^^
    Comunque alla fine ho risolto con queste righe di codice:
    codice:
     If e.Button = Windows.Forms.MouseButtons.Right Then
                    sender.ClearSelection()
                    Dim ht As DataGridView.HitTestInfo = sender.HitTest(e.X, e.Y)
    
    
                    If ht.ColumnIndex >= 0 And ht.RowIndex >= 0 Then
                        Me.dgvScadenze.CurrentCell = Me.dgvScadenze.Rows(ht.RowIndex).Cells(ht.ColumnIndex)
                        ID_Scadenza = CIntN(Me.dgvScadenze.Rows(ht.RowIndex).Cells("ID_Scadenza").Value)
                    End If

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.