VB Copiare contenuto DatagridView1 in DatagridView2

Stato
Discussione chiusa ad ulteriori risposte.

lDraik

Utente Gold
28 Ottobre 2012
495
18
107
201
Salve,
Ho una DataGridView nel Form1, quello che vorrei fare è copiare il contento delle celle selezionate e incollarle in una seconda DataGridView collocata nel Form2.
Per la funzione copia ho usato questo codice che sembra funzionare senza problema :
Codice:
DataGridView1.SelectAll()
Clipboard.SetDataObject(Me.DataGridView1.GetClipboardContent())
Il problema viene ora, cioè quando il programma dovrebbe andare a incollare il contenuto copiato grazie al codice di sopra nelle seconda DataGridView, quella situata nel Form2.
Il codice che ho usato è il seguente :
Dim srFormattedData As String
Dim s() As String
Dim t As String
Dim C() As String

Dim objSpreadSheetData As IDataObject = Clipboard.GetDataObject

srFormattedData = Clipboard.GetText()
srFormattedData = srFormattedData.Replace(vbCrLf, Chr(13))


Dim charSeparators() As Char = {Chr(13)}
s = srFormattedData.Split(charSeparators) ' StringSplitOptions.RemoveEmptyEntries)
Dim I As Short = 0
Dim I2 As Integer = 0

Dim Pos As Integer =Form2.DataGridView1.CurrentRow.Index

For Each t In s
t = t.Replace(vbTab, ";")
C = t.Split(";")
Form2.DataGridView1.Rows.Add(1)

For Each N In C
Form2.DataGridView1.Rows(Pos + I).Cells(I2).Value = N
I2 += 1
Next

I += 1
I2 = 0
Next

Il problema è che quando eseguo questo codice ottengo questo errore : "Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione della raccolta."Se può esservi di aiuto ho anche notato che se eseguo soltanto il codice per incollare le celle senza aver prima eseguito quello per copiarle non ottengo nessun errore e il codice risulta funzionante. Sapreste dirmi a cosa è dovuto questo errore e cosa dovrei fare per risolverlo?

Grazie Mille
 
Se mi posso permettere il codice è praticamente illeggibile. Comunque riguarda gli indici soprattutto nei for.

Inviato dal mio ONE E1003 utilizzando Tapatalk
 
Se mi posso permettere il codice è praticamente illeggibile. Comunque riguarda gli indici soprattutto nei for.

Inviato dal mio ONE E1003 utilizzando Tapatalk
@theboy Hai qualche consiglio per migliorarlo?
Comunque ho risolto, basta settare la proprietà Visible di RowHeaders su False e il codice torna a funzionare correttamente
 
Utilizza una giusta indentatura ed evita di dichiarare variabili all'interno dei "blocchi" tra un pezzo di codice e l'altro.
 
Salve,
Ho una DataGridView nel Form1, quello che vorrei fare è copiare il contento delle celle selezionate e incollarle in una seconda DataGridView collocata nel Form2.
Per la funzione copia ho usato questo codice che sembra funzionare senza problema :
Codice:
DataGridView1.SelectAll()
Clipboard.SetDataObject(Me.DataGridView1.GetClipboardContent())
Il problema viene ora, cioè quando il programma dovrebbe andare a incollare il contenuto copiato grazie al codice di sopra nelle seconda DataGridView, quella situata nel Form2.
Il codice che ho usato è il seguente :
Dim srFormattedData As String
Dim s() As String
Dim t As String
Dim C() As String

Dim objSpreadSheetData As IDataObject = Clipboard.GetDataObject

srFormattedData = Clipboard.GetText()
srFormattedData = srFormattedData.Replace(vbCrLf, Chr(13))


Dim charSeparators() As Char = {Chr(13)}
s = srFormattedData.Split(charSeparators) ' StringSplitOptions.RemoveEmptyEntries)
Dim I As Short = 0
Dim I2 As Integer = 0

Dim Pos As Integer =Form2.DataGridView1.CurrentRow.Index

For Each t In s
t = t.Replace(vbTab, ";")
C = t.Split(";")
Form2.DataGridView1.Rows.Add(1)

For Each N In C
Form2.DataGridView1.Rows(Pos + I).Cells(I2).Value = N
I2 += 1
Next

I += 1
I2 = 0
Next

Il problema è che quando eseguo questo codice ottengo questo errore : "Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione della raccolta."Se può esservi di aiuto ho anche notato che se eseguo soltanto il codice per incollare le celle senza aver prima eseguito quello per copiarle non ottengo nessun errore e il codice risulta funzionante. Sapreste dirmi a cosa è dovuto questo errore e cosa dovrei fare per risolverlo?

Grazie Mille
potresti dichiarare che la datagrid del form 2 è uguale a qulela del form1
 
Stato
Discussione chiusa ad ulteriori risposte.