2016-05-25 8 views
0

i in vb.net mehrere Spalte in Datagridview von Code hinzufügen möchte, dass meine Coed hier ist, aber ich habe einen Fehlerfügen Sie mehrere Spalte in Datagridview von Code in vb.net

„Objektverweis nicht auf eine Set Instanz eines Objekts. "

Dim varCount As Integer = 0 
Dim I As Integer = 1 
Try 
    Do While varCount < 1 
     Dim COLUMN(I) As DataGridViewColumn 
     With COLUMN(I) 
      .HeaderText = "Details" 
      .Name = "Details" 
      ' Use the Text property for the button text for all cells rather 
      ' than using each cell's value as the text for its own button. 
     End With 
      DataGridView1.Columns.Insert(0, COLUMN(I)) 
      I = I + 1 
      varCount = varCount + 1 
    Loop 
Catch ex As Exception 
     MessageBox.Show(ex.Message) 
End Try 

Antwort

1

Sie keine Spalte initilazing, müssen Sie es als neues Datagridviewcolumn dimmen.

Auch als @marlan pointet, erstellen Sie Arrays von Spalten, die Sie nicht brauchen.

Und meiner Meinung nach ist eine for hier besser als eine Weile, aber das ist nur eine Frage der Meinung.

Dim varCount As Integer = 0 
Dim I As Integer = 1 
Try 
    Do While varCount < 1 
     Dim column As new DataGridViewColumn 
     With column 
      .HeaderText = "Details" 
      .Name = "Details" 
      ' Use the Text property for the button text for all cells rather 
      ' than using each cell's value as the text for its own button. 
     End With 
     DataGridView1.Columns.Insert(0, column) 
     I = I + 1 
     varCount = varCount + 1 
    Loop 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
End Try 

Mit für:

Dim I As Integer = 1 
Try 
    For index = 1 To 10 'How many do you want? 
     Dim column As new DataGridViewColumn 
     With column 
      .HeaderText = "Details" 
      .Name = "Details" 
      ' Use the Text property for the button text for all cells rather 
      ' than using each cell's value as the text for its own button. 
     End With 
     DataGridView1.Columns.Insert(0, column) 
    Next 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
End Try 

EDIT

Als @ beldi-anouar Pointet (Nicht mein Tag heute -.-) Sie können nicht mehr als eine Spalte mit demselben Namen erstellen .

Sie könnten ein Array von Strings für die Namen und ein anderes für die Header erstellen.

Dim names = {"name1", "name2"} 
Dim headers = {"head1", "head2"} 

Und dann asign sie:

With column 
    .HeaderText = headers(index) 
    .Name = names(index) 
End With 

Das ist für die for, nicht das tun, während. Im do während substitude nur index mit varCount

+1

Wenn ja, warum bei jedem ein Array erstellen * Während * Iteration? Warum nicht eine Spalte erstellen und sie in 'DataGridView1' einfügen? : sollte nicht "Dim COLUMN als neue DataGridViewColumn" sein und dann einfügen: 'DataGridView1.Columns.Insert (0, COLUMN)'? – marlan

+0

Woops, ja. Mein schläfriger Verstand stellte fest, dass es "Spalte (i) = neue DataGridViewColumn" war – Aimnox

+1

@Aimnox Sie können 10 Spalten mit dem gleichen Namen "Details" nicht erstellen! –

0

Try this:

Dim varCount As Integer = 0 
    Dim I As Integer = 1 
    Dim x As Integer = 5 'Number of columns you want to add 
     Do While varCount < x 
     col = New DataGridViewColumn() 
     DataGridView1.Columns.Add("Details" & I, "HeaderDetails" & I) 
     I = I + 1 
     varCount = varCount + 1 
    Loop 
Verwandte Themen