GridView çoklu yapışltırma

Merhabalar,

Vbde bir derdim var. Excelden seçtiğim satırları gridview e tek seferde nasıl yapıştırabilirim?

Cevabı buldum madem ben yazayım başka birine faydası dokunur :)

Gridin keydown olayında Ctrl+V yi yakalayıp aşağıdaki yapistirr fonksiyonunu çalıştırarak derdimi çözdüm.

   Sub yapistirr(ByVal dgv As DataGridView)
        If Len(Clipboard.GetText) > 0 Then
            Dim rowSplitter As Char() = {vbCr, vbLf}
            Dim columnSplitter As Char() = {vbTab}

            Dim dataInClipboard As IDataObject = Clipboard.GetDataObject()
            Dim stringInClipboard As String = CStr(dataInClipboard.GetData(DataFormats.Text))

            Dim rowsInClipboard As String() = stringInClipboard.Split(rowSplitter, StringSplitOptions.RemoveEmptyEntries)

            Dim r As Integer = dgv.SelectedCells(0).RowIndex
            Dim c As Integer = dgv.SelectedCells(0).ColumnIndex

            If (dgv.Rows.Count < (r + rowsInClipboard.Length)) Then
                dgv.Rows.Add(r + rowsInClipboard.Length - dgv.Rows.Count)
            End If

            Dim iRow As Integer = 0
            While iRow < rowsInClipboard.Length
                Dim valuesInRow As String() = rowsInClipboard(iRow).Split(columnSplitter)
                Dim iCol As Integer = 0
                While iCol < valuesInRow.Length
                    If (dgv.ColumnCount - 1 >= c + iCol) Then
                        dgv.Rows(r + iRow).Cells(c + iCol).Value = valuesInRow(iCol)
                        dgv.Rows(r + iRow).Cells(c + iCol + 1).Value = iRow
                        dgv.Rows(r + iRow).Cells(c + iCol + 2).Value = iRow + 1
                    End If
                    iCol += 1
                End While
                iRow += 1
            End While
            MsgBox(dgv.RowCount)
        End If
    End Sub

Cevap Yaz

Cevap yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git