public override object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { base.SetObjectData(obj, info, context, selector); SchemaModel schemaModel = (SchemaModel)obj; schemaModel.Suspend(); try { schemaModel.WorkspaceType = (esriWorkspaceType)Enum.Parse(typeof(esriWorkspaceType), info.GetString("workspaceType"), true); schemaModel.Version = info.GetString("version"); schemaModel.Metadata = info.GetString("metadata"); schemaModel.XmlEncoding = (DiagramEncoding)Enum.Parse(typeof(DiagramEncoding), info.GetString("encoding"), true); schemaModel.XmlIndent = info.GetBoolean("indent"); } catch { } schemaModel.Resume(); return(schemaModel); }
private void CollectionForm_Closing(object sender, CancelEventArgs e) { // Get Collection Form CollectionForm collectionForm = (CollectionForm)sender; // Get edited collection object object editValue = collectionForm.EditValue; // Check if collection edits have been OK'ed or Canceled DialogResult dialogResult = collectionForm.DialogResult; switch (dialogResult) { case DialogResult.OK: // Get Schema Model DiagrammerEnvironment d = DiagrammerEnvironment.Default; SchemaModel schemaModel = d.SchemaModel; // Suspect Model Draws schemaModel.Suspend(); // Get TableItems Collection TableItems tableItems = (TableItems)editValue; // Store items in new List List <TableItem> list = new List <TableItem>(); foreach (TableItem tableItem in tableItems) { list.Add(tableItem); } // Clear TableItems Collection tableItems.Clear(); // Re-add all items. foreach (TableItem tableItem in list) { // If the Table property is not set then use TableItems::Add to append the item. // This will ensure that Table, GradientColor, Indent properties are correctly set. // This will also reset the height of the TableItems collection. if (tableItem.Indent == 0f) { tableItems.Add(tableItem); } else { ((IList)tableItems).Add(tableItem); } } // Refresh Model schemaModel.Resume(); schemaModel.Refresh(); break; case DialogResult.Cancel: default: // Collection edits are canceled. No need to refresh. break; } }