+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

Intercettare keyup su determinata colonna di un datagridview

  1. #1
    Nottambulo non è in linea Scolaretto
    Ciao, ho un datagridview collegato a un database al quale ho aggiunto 2 colonne. In una inserisco un valore numerico e nella seconda dovrebbe darmi il totale preso dalla colonna prezzo moltiplicato per il valore inserito. Come potrei intercettare l'evento keyup solo nella colonna dove inserisco il numero?
    Grazie, ciao
    Ultima modifica di elisab; 28-09-2010 19:37 

  2. #2
    L'avatar di elisab
    elisab non è in linea Scribacchino
    Ciao
    se la Datagridview ha come fonte dati un DataTable puoi aggiungere una colonna calcolata impostando la proprietà Expression del DataColumn.

    Come potrei intercettare l'evento keyup solo nella colonna dove inserisco il numero?
    Guarda questo esempio.
    ℹ️ Leggi di più su elisab ...

  3. #3
    Nottambulo non è in linea Scolaretto
    Grazie, funziona a metà, meglio di niente ... Quando inserisco il primo numero funziona, con i seguenti no. Questo è il codice preso dall'esempio e modificato per il mio progetto:

     
        Private Sub TabellaProdottiDataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles TabellaProdottiDataGridView1.EditingControlShowing
            If TabellaProdottiDataGridView1.CurrentCell.ColumnIndex = 0 And Not e.Control Is Nothing Then
                Dim txtBox As TextBox = DirectCast(e.Control, TextBox)
                AddHandler txtBox.KeyDown, AddressOf TextBox_KeyDown
                AddHandler txtBox.Leave, AddressOf TextBox_Leave
            End If
        End Sub
        Private Sub TextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
            Me.TabellaProdottiDataGridView1.CurrentRow.Cells("Column2").Value = (Me.TabellaProdottiDataGridView1.CurrentRow.Cells("Column1").Value * TabellaProdottiDataGridView1.CurrentRow.Cells("DataGridViewTextBoxColumn9").Value) & " Frs."
        End Sub
        Private Sub TextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim txtBox As TextBox = DirectCast(sender, TextBox)
            RemoveHandler txtBox.KeyDown, AddressOf TextBox_KeyDown
            RemoveHandler txtBox.Leave, AddressOf TextBox_Leave
        End Sub
    
    Ultima modifica di elisab; 22-09-2010 22:12  Motivo: aggiustata indentazione

  4. #4
    L'avatar di elisab
    elisab non è in linea Scribacchino
    Ciao
    l'evento da usare è il KeyUp e non il KeyDown (perchè moltiplicheresti per il valore precedente alla digitazione), prova anche con TextChanged che ricomprende anche l'eventualità in cui il valore è incollato.

    Finchè non termini la digitazione l'EditingControl non notifica il cambio del Value alla cella della dgv sottostante, quindi devi prendere il valore dalla textbox e non dalla cella sottostante.

    Nel mio esempio moltiplico solo interi
        Private Sub TextBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
            Dim txtBox As TextBox = DirectCast(sender, TextBox)
            Dim value As Integer
            If Integer.TryParse(txtBox.Text, value) Then
                DataGridView1.CurrentRow.Cells("Totale").Value = (value * CInt(DataGridView1.CurrentRow.Cells(6).Value)) & " Frs."
            Else
                DataGridView1.CurrentRow.Cells("Totale").Value = String.Empty
            End If
        End Sub
    
    ℹ️ Leggi di più su elisab ...

  5. #5
    Nottambulo non è in linea Scolaretto
    Con qualche modifica e tanta fatica ho raggiunto l'obiettivo. Grazie dell'indispensabile aiuto.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. DataGridView - CurrentCell.RowIndex in evento Keyup
    Da Brontolo nel forum Visual Basic .Net
    Risposte: 5
    Ultimo Post: 01-09-2020, 07:33
  2. intercettare la key in una combo di una datagridview
    Da SebastianoFloridia nel forum C#
    Risposte: 3
    Ultimo Post: 13-11-2018, 22:06
  3. Risolto: [VB2005/2008] DataGridView: focus su una determinata cella
    Da saso79 nel forum Visual Basic .Net
    Risposte: 9
    Ultimo Post: 01-02-2013, 10:45
  4. colonna non associata datagridview
    Da FPService nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 07-08-2012, 12:07
  5. [MsSQL]Aggiungere colonna in una determinata posizione
    Da angelmag nel forum Microsoft SQL Server
    Risposte: 4
    Ultimo Post: 10-01-2005, 12:10