void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) { try { ValueType[] parts = new ValueType[dataGridView.Rows.Count]; for (int i = 0; i < dataGridView.Rows.Count; i++) { DataGridViewRow row = dataGridView.Rows[i]; switch (row.Cells[2].Value.ToString()) { case "Byte": parts[i] = byte.Parse(row.Cells[1].Value.ToString(), System.Globalization.NumberStyles.AllowHexSpecifier); break; case "UInt16": parts[i] = ushort.Parse(row.Cells[1].Value.ToString(), System.Globalization.NumberStyles.AllowHexSpecifier); break; case "UInt32": parts[i] = uint.Parse(row.Cells[1].Value.ToString(), System.Globalization.NumberStyles.AllowHexSpecifier); break; case "UInt64": parts[i] = ulong.Parse(row.Cells[1].Value.ToString(), System.Globalization.NumberStyles.AllowHexSpecifier); break; } } MetaDataRow newrow = new MetaDataRow(currentMember.MetaDataRow.Offset, parts); currentMember.MetaDataRow = newrow; currentMember.ClearCache(); currentMember.ApplyChanges(); propertyGrid.Refresh(); } catch (Exception ex) { MessageBox.Show("An error occured. " + ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }