[VB.net] Überprüfen ob alle Zellen im DataGridView ausgefüllt sind

zerberos

Well-known member
ID: 58651
L
30 Mai 2006
75
0
Hallo,

ich habe ein DataGridView mit den 4 Spalten vom Typ:

1. DataGridViewComboBoxCell
2. DataGridViewComboBoxCell
3. DataGridViewComboBoxCell
4. DataGridViewTextBoxCell

Jetzt möchte ich das erst die nächste Zeile angefügt wird wenn alle 4 Felder ausgefüllt sind. Wie mache ich das?
 
Nunja, ich kann zwar kein VB, aber normalerweise hast du die möglichkeit jede einzelne Zelle abzufragen. Dann noch zwei Zählschleifen drum herum und immer schön schauen, dass was in der Zelle drin steht.

für 0 bis index
für 0 bis 3​
Zelle nicht leer​


Ich hoffe das ist verständlich - Ich war noch nie gut im Struktogramm malen.

Dann hängst du einfach noch deine gewünschten Sachen hinten dran (oder fügst sie an entsprechender Stelle ein)
 
Würds entweder ins .OnLeave reinpacken oder ins .OnKeyPress/.OnClick
Glaube ersteres ist die bessere Wahl, ein OnChange-Event hab ich leider nicht bei den Membern gefunden.

Im Prinzip ists simpel, vorsicht pseudoCode (für richtigen Code hab ich grad zu viel Stress *g)
PHP:
Protected Overrides Sub OnLeave ( rowIndex As Integer,  throughMouseClick As Boolean )
  if rowIndex <> maxIndex then
    'was kümmerts mich ich bin nicht die letzte Zeile'
  else
    'mein Job !'
    if cell1(rowIndex).GetValue <> ' ' and _
      cell2(rowIndex).GetValue <> ' ' and _
      cell3(rowIndex).GetValue <> ' ' and _
      cell4(rowIndex).GetValue <> ' ' then
      'alle Cells meines RowIndexes haben Content'
      --> Add neue Reihe
    end if
  end if
End sub
so müssts im Prinzip gehen, also sobald du den Focus verlierst, checkst du ob du die letzte Reihe bist, sollte das der Fall sein hängst du eine neue dran falls alles gefüllt ist. Dank deinem RowIndex bekommst du ja den Content der Zellen neben dir recht einfach mit.

Nachteil an OnLeave: es wird erst eine neue hinzugefügt, wenn der Benutzer irgendwo außerhalb der Zelle klickt