Wie fangen DataGridView-validation-Fehler, wenn ich Schreibe Wert in bearbeitbaren Zellen?

Ich habe gesehen, eine Menge von Lösungen für das, wo Datenbindung beteiligt ist, aber habe ich nicht eine Daten-Quelle. In diesem Fall der combo-Zelle gilt nur für 1 Zeile (die anderen Zeilen haben nicht die DataGridViewComboBoxCell).

Ich DataGridViewComboCell wie diese:

DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();
cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
cell.Items.AddRange(items.ToArray());   //items is List<string>

Und ich wieder dynamisch füllen Sie es später wie folgt:

_cell.Items.Clear();
_cell.Items.AddRange(this.Data.ResponseOptions.Select( d => d.Description).ToArray());   
//d.Description is of type string

Aber dann bekomme ich diese fiesen dialog, der sagt:

Folgende Ausnahme aufgetreten ist, in das DataGridView:
System.ArgumentException: DataGridViewComboBoxCell Wert ist nicht gültig.
Ersetzen Sie das Standard-Dialogfeld bitte behandeln Sie das DataError-Ereignis.

Es hilft nicht viel, durch die Art und Weise, zu sagen, es ist nicht "gültig". Ist es fair, senden Sie eine E-Mail an MS sagt Windows Forms ist nicht gültig?

Ich habe versucht, greifen die Zelle die items-Eigenschaft und fügen Sie anschließend die Saiten mit Hilfe einer foreach() mit einer Add () - Aufruf. Ich bekomme immer noch den dialog.

Habe ich auch versucht, blies die ganze Zelle jedesmal, wenn ich wollen, Sie zu aktualisieren und neu eine neue DataGridViewComboCell von Grund auf. Ich bekomme immer noch den dialog.

Ich habe auch versucht manuell überschreiben der Spalten Wert (erfolgreich, wenn ich nicht dieses problem haben). Trifft nicht zu beheben, aber.

Ich nur scheinen, um dieses Dialogfeld wenn ich versuche, um wieder zu bevölkern, die Elemente in der combo-Zelle.

Für jetzt habe ich einfach abgewischt das DataError-Methode.

Irgendwelche Vorschläge?

  • Ich habe gesehen, dieser Fehler vor. Es tritt auf, wenn Sie festgelegt haben, dass ein ValueType für die Zelle und die Daten, die Sie füttern sind unterschiedlichen Typs. Haben Sie überprüft, dass?
  • das dachte ich auch, aber wie Sie sehen können aus den oben ich habe versucht, indem die Elemente als genau der gleichen Art, die ursprünglich und in der update (in mehrfacher Hinsicht).
  • Wenn ich du wäre, würde ich DataError drucken, mir einen Bericht über eine messagebox-von der Art und der Werte der Elemente, die Hinzugefügt werden. Viele Male, was Sie denken, Sie tun, ist nicht das gleiche wie das, was Sie eigentlich tun. Vor allem in C#. Ich vermute, null-Werte, die Wahrheit zu sagen.
  • Tat Sie versuchen, das DataError drucken Sie die Werte und Typen, die Sie verursacht, dass es Feuer? Es ist den meisten wahrscheinlich Sie geschossen haben. DataError feuert für jeden Wert, der ungültig ist. Wenn es feuert nur einmal für Sie, dann gibt es nur einen Wert, der ungültig ist. Auch das problem könnte sein, auf den text-Wert der combo. Nicht in der Liste der Werte.
InformationsquelleAutor micahhoover | 2013-10-21
Schreibe einen Kommentar