Das Festlegen von DataGridView.DefaultCellStyle.NullValue zur Entwurfszeit auf null löst einen Fehler beim Hinzufügen von Zeilen zur Laufzeit aus

StackOverflow https://stackoverflow.com/questions/48271

  •  09-06-2019
  •  | 
  •  

Frage

In Visual Studio 2008

  • Fügen Sie einem Formular eine neue DataGridView hinzu
  • Spalten bearbeiten
  • Fügen Sie eine neue DataGridViewImageColumn hinzu
  • Öffnen Sie den CellStyle Builder dieser Spalte (DefaultCellStyle-Eigenschaft).
  • Ändern Sie den NullValue von System.Drawing.Bitmap in null
  • Versuchen Sie, der DataGridView zur Laufzeit eine neue Zeile hinzuzufügen (DataGridView1.rows.add ();).
  • Sie erhalten diesen Fehler:System.FormatException:Der formatierte Wert der Zelle hat einen falschen Typ.

Wenn Sie den Nullwert wieder in System.Drawing.Bitmap ändern (wie er war), wird beim Hinzufügen einer Zeile immer noch der gleiche Fehler angezeigt.

Wenn Sie den NullValue zur Laufzeit statt zur Entwurfszeit festlegen, erhalten Sie keine Fehlermeldung.(dataGridView1.Columns[0].DefaultCellStyle.NullValue = null;)

Können Sie mir sagen, warum das so ist?

War es hilfreich?

Lösung

Dies kann durchaus ein Fehler im Designer sein;Wenn Sie sich in der Datei .designer.cs umsehen (vielleicht einen Unterschied zwischen vor und nach dem Setzen von NullValue auf null machen), sollten Sie den von ihr generierten Code sehen können.

Andere Tipps

Kronoz hat recht.Nachdem es zur Entwurfszeit festgelegt wurde, fügt es Folgendes zur .designer.cs hinzu:

dataGridViewCellStyle1.NullValue = "null";

Wenn ich es ändere "Null" Zu Null dann klappt es prima.Ich habe DataGridViewCellStyle.NullValue set_NullValue(Object) und get_NullValue mit Reflektor überprüft und denke, dass ein String-Wert hier keinen Fehler auslösen sollte.

Seien Sie dabei auf jeden Fall vorsichtig und wenn Sie die Designzeit festlegen möchten, vergessen Sie nicht, die .design.cs zu ändern.

Ändern Sie den NullValue von System.Drawing.Bitmap in null

Wenn Sie im Designer „null“ in das Feld für NullValue eingeben, geben Sie den String-Wert „null“ an.Die einzige Möglichkeit, NullValue auf einen Nicht-String-Wert festzulegen, besteht darin, ihn programmgesteuert festzulegen oder den Designercode selbst zu ändern.

Das Kontrollkästchen darf keinen String-Wert haben.Legen Sie im IDE-Eigenschaftendialog keinen Standardwert fest.Ich habe „Empty“ in die RowsDefaultCellStyle.Format-Eigenschaft geschrieben und das hat den Fehler verursacht.Es war selbstverschuldet.Als Lösung habe ich versucht, den Status des Kontrollkästchens auf „Deaktiviert“ zu setzen, aber ich musste nur den Zeichenfolgenwert löschen.

Ich habe festgestellt, dass es besser ist, wenn Sie einfach das gesamte Element aus dem Formatbereich und dem Standard-Nullwertbereich aus dem Designer löschen.Dann wird es auf den echten Nullwert zurückgesetzt.Ich werde versuchen, es im Init-Abschnitt weg von dem vom Designer generierten Mist zu platzieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top