Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Μετακίνηση σε datagridview

Îåêßíçóå áðü ôï ìÝëïò gmlogic. Τελευταία δημοσίευση από το μέλος gmlogic στις 28-07-2006, 17:23. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-07-2006, 12:04 14838

    Crying [:'(] Μετακίνηση σε datagridview

    Μήπως ξέρει κανείς πως γίνετε με το enter να γίνετε η μετακίνηση στο διπλανό κελί ενός datagridview

    Γιατί με το enter μετακινήτε στη επόμενη γραμμή και αν  SendKeys.Send("{TAB}") ή 'SendKeys.Send("{RIGHT}")

    αντί για enter, τότε μετακινήτε στη επόμενη γραμμή και στο έπομενο κελί

    Σας ευχαριστώ πολύ

    Υ.Γ.

    SOSSSSSSSSS


    George Matzouranis
  •  17-07-2006, 20:45 14854 σε απάντηση της 14838

    Απ: Μετακίνηση σε datagridview

    Δοκίμασε αυτή τη προσέγγιση, να κάνεις inherit το DataGridView και να κάνεις override της OnKeyDown



    Public Class MyDataGridView
        Inherits DataGridView

        Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
            If e.KeyCode = Keys.Enter Then
                SendKeys.Send("{RIGHT}")
            Else
                MyBase.OnKeyDown(e)
            End If
        End Sub
    End Class

     


    Vir prudens non contra ventum mingit
  •  18-07-2006, 11:23 14873 σε απάντηση της 14838

    Απ: Μετακίνηση σε datagridview

    Μάνο δούλεψε μερικώς

    Δηλ.όταν είναι πάνω στο Grid με enter μεταφέρετε στο διπλανό κελί αλλά

    όταν είσαι μέσα στο κελί δηλ σε edit του cell τότε με enter μεταφέρετε στη από κάτω γραμμή

    Υ.Γ

    Αν κατάλαβα καλά για να εφαρμόσω αυτά που μου είπες, γιατί το κάνω πρώτη φορά, δεν μπορώ μέσω designer αλλά κάπως έτσι.

    Dim WithEvents dgTIM45 As New MyDataGridView

    Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle

    DataGridViewCellStyle1 = New DataGridViewCellStyle

    DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft

    DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.ActiveCaption

    DataGridViewCellStyle1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(161, Byte))

    DataGridViewCellStyle1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(128, Byte), Integer))

    DataGridViewCellStyle1.SelectionBackColor = System.Drawing.Color.GreenYellow

    DataGridViewCellStyle1.SelectionForeColor = System.Drawing.Color.Red

    DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]

    Me.dgTIM45.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle1

    Me.dgTIM45.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize

    Me.dgTIM45.Location = New System.Drawing.Point(8, 117)

    Me.dgTIM45.Name = "dgTIM45"

    Me.dgTIM45.Size = New System.Drawing.Size(840, 227)

    Me.dgTIM45.TabIndex = 138

    Me.Controls.Add(Me.dgTIM45)


    George Matzouranis
  •  18-07-2006, 12:37 14877 σε απάντηση της 14873

    Απ: Μετακίνηση σε datagridview

    Μόλις μπαίνεις σε Edit mode, ο έλεγχος περνάει στο DataGridViewTextBoxColumn control του αντίστοιχου cell. Θα πρέπει κι εκεί να κάνεις κάτι ανάλογο υποθέτω.

    Ένας γρήγορος τρόπος για να μην γράφεις εσύ όλοκληρο τον κώδικα είναι να χρησιμοποιήσεις τον designer κανονικά με ένα standard DataGridView και κατόπιν να πας μέσα στην Partial Class του designer και να αλλάξεις το declaration και το instatiation από system.Windows.Forms.DataGridView π.χ. σε MyDataGridView. Αντίστοιχα, αν φτιάξεις και MyDataGridViewTextBoxColumn, τότε άλλαξε και όλα τα DataGridViewTextBoxColumn όπως προηγουμένως. Καλό θα είναι τέλος να περάσεις αυτόν τον κώδικα σε μια δική σου ρουτίνα γιατί υπάρχει μεγάλη πιθανότητα να τον κάνει overwrite ο designer αν κάνεις αλλαγές στη φόρμα.
    Vir prudens non contra ventum mingit
  •  23-07-2006, 01:07 15117 σε απάντηση της 14877

    Απ: Μετακίνηση σε datagridview

    Μάνο σε ευχαριστώ πολύ για την απάντηση

    Αλλά δεν κατάφερα να λύσω το πρόβλημα

    Όταν λές "Μόλις μπαίνεις σε Edit mode, ο έλεγχος περνάει στο DataGridViewTextBoxColumn control του αντίστοιχου cell. Θα πρέπει κι εκεί να κάνεις κάτι ανάλογο υποθέτω."

    δεν καταλαβένω τι ακριβώς να κάνω.

    Μπορείς σε παρακαλώ να με βοηθήσης με λίγο κώδικα

    Ευχαριστώ εκ των προτέρων


    George Matzouranis
  •  26-07-2006, 15:30 15221 σε απάντηση της 14838

    Απ: Μετακίνηση σε datagridview

    Δες αυτό κι αν καταλάβεις τι πρέπει να κάνεις ακριβώς πες μου κι εμένα γιατί έχω κολλήσει


    Panos
  •  28-07-2006, 17:23 15291 σε απάντηση της 14838

    Απ: Μετακίνηση σε datagridview

    Πάνο δοκίμασε αυτό σε μένα δουλεύει

    ------------------------------------------------------

    Public Class MyDataGridView

    'this tells this class that is a datagridview

    Inherits System.Windows.Forms.DataGridView

    'Dim titleColumn As New DataGridViewTextBoxColumn()

    'this function do the half of job

    'when you hit a key (like return) it transforms like you

    'have been hit the tab key

    'this doent work when you are editing the cell

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean

    If keyData = Keys.Return Then

    keyData = Keys.Tab

    With msg

    .WParam = Keys.Tab

    End With

    End If

    Return MyBase.ProcessCmdKey(msg, keyData)

    End Function

    'this second function works when you are editing the cell

    'does the same as the function above changing return for tab

    Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean

    If keyData = Keys.Return Then

    keyData = Keys.Tab

    End If

    Return MyBase.ProcessDialogKey(keyData)

    End Function

    'Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)

    ' If e.KeyCode = Keys.Enter Then

    ' SendKeys.Send("{TAB}")

    ' Else

    ' MyBase.OnKeyDown(e)

    ' End If

    'End Sub

    End Class


    George Matzouranis
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems