Die DataGridViewComboBoxColumn sollte immer alle möglichen Werte in der Combobox Elementliste haben oder es wird "FormatException: Der DataGridViewComboBoxCell Wert ist nicht gültig".
Wenn Sie versuchen, Werte aus einer Combobox-Spalte zurückzugewinnen, können Sie das DataGridView CellParsing-Ereignis behandeln und das ausgewählte Element aus DataGridView.EditingControl abrufen, da es für das Bearbeiten der Steuerung aus der bearbeiteten Spalte festgelegt wird. Hier ist ein exemple:
private void dataGridView1_CellParsing(object sender,
DataGridViewCellParsingEventArgs e) {
if (dataGridView1.CurrentCell.OwningColumn is DataGridViewComboBoxColumn) {
DataGridViewComboBoxEditingControl editingControl =
(DataGridViewComboBoxEditingControl)dataGridView1.EditingControl;
e.Value = editingControl.SelectedItem;
e.ParsingApplied = true;
}
}
Sie können auch die Art und Weise anpassen Ihre Objekte sind zeigen auf jeder Zelle, die durch die Zellformatierung Ereignisbehandlung, hier ist ein Code, der toString für jedes Objekt oder eine Schnittstelle anzuzeigen.
private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e) {
if (e.Value != null) {
e.Value = e.Value.ToString();
e.FormattingApplied = true;
}
}
behandelt diese beiden Ereignisse sollten für die Show und Bearbeiten von Daten innerhalb eines bussiness-Objekt und seine easer dann Schreibtyp-Wandler genug sein. Für diese Arbeit, die Sie und Sie Datagridview combobox Spalte wie folgt festgelegt:
var data = (from item in someTable
select new { Foo = item.foo, Bar = item.Bar }).ToList();
grid.DataSource = data;
column.DataPropertyName = "Foo";
column.DataSource = (from foo in Foo select foo).ToList();
Keine Display oder Valuemember Eigentum müssen eingestellt werden, so stellen Sie sicher, dass Ihre Combobox Datenquelle Liste, die alle möglichen Werte für Foo hat.
Hoffe, es hilft.
Wie mache ich den TypeConverter? – albertein
Sie erben von TypeConverter und überschreiben die GetProperties/GetPropertiesSupported-Methoden. Wenden Sie dann den Typ auf das TypeConverterAttribute auf Ihrem gewünschten Zieltyp an. Das Themengebiet ist sehr groß. Google für etwas mehr Richtung. – leppie
Ich implementierte einen TypeConverter und überschrieb CanConvertTo, CanConvertFrom, ConvertTo und ConvertFrom, jetzt bekomme ich den Fehler "FormatException: Der Wert der DataGridViewComboBoxCell ist nicht gültig" nach dem Setzen des Wertes – albertein