//https://stackoverflow.com/questions/14431936/how-to-force-datagridviewcell-to-end-edit-when-row-header-is-clicked/14498870 private void XMLView_MouseClick(object sender, MouseEventArgs e) { if (XMLView.HitTest(e.X, e.Y).Type == DataGridViewHitTestType.RowHeader) { XMLView.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2; XMLView.EndEdit(); } else { XMLView.EditMode = DataGridViewEditMode.EditOnEnter; } }
private void SaveXML(bool noReload = false) { XMLView.EndEdit(); //https://stackoverflow.com/questions/37145086/datagridview-remove-empty-rows-button for (int i = XMLView.Rows.Count - 1; i > -1; i--) { DataGridViewRow row = XMLView.Rows[i]; if (!row.IsNewRow && row.Cells[0].Value == null) { XMLView.Rows.RemoveAt(i); } } List <Provider> providerList = new List <Provider>(); List <PartColor> partColorList = new List <PartColor>(); foreach (DataGridViewRow data in XMLView.Rows) { if (data.IsNewRow) { continue; } switch (ListType) { case XMLContentType.ContentProviders: Provider pro = new Provider(); pro.Name = data.Cells[0].Value.ToString(); pro.URL = data.Cells[1].Value.ToString(); pro.Icon = data.Cells[2].Value.ToString(); providerList.Add(pro); break; case XMLContentType.PartColors: PartColor pc = new PartColor(); pc.ColorRawName = data.Cells[0].Value.ToString(); pc.ColorID = Convert.ToInt32(data.Cells[1].Value); pc.ColorRGB = data.Cells[2].Value.ToString(); partColorList.Add(pc); break; default: break; } } //https://stackoverflow.com/questions/2129414/how-to-insert-xml-comments-in-xml-serialization switch (ListType) { case XMLContentType.ContentProviders: ContentProviders providers = new ContentProviders(); providers.Providers = providerList.ToArray(); XmlSerializer ser = new XmlSerializer(typeof(ContentProviders)); using (FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ContentProviderXMLName, FileMode.Create)) { XmlWriter writer = XmlWriter.Create(fs, new XmlWriterSettings { Indent = true }); writer.WriteStartDocument(); writer.WriteComment(GenerateComment("content providers")); ser.Serialize(writer, providers); writer.WriteEndDocument(); writer.Flush(); } break; case XMLContentType.PartColors: PartColors partColors = new PartColors(); partColors.ColorList = partColorList.ToArray(); XmlSerializer ser2 = new XmlSerializer(typeof(PartColors)); using (FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.PartColorXMLName, FileMode.Create)) { XmlWriter writer = XmlWriter.Create(fs, new XmlWriterSettings { Indent = true }); writer.WriteStartDocument(); writer.WriteComment(GenerateComment("part colors")); ser2.Serialize(writer, partColors); writer.WriteEndDocument(); writer.Flush(); } break; default: break; } providerList.Clear(); partColorList.Clear(); string fileName = ""; switch (ListType) { case XMLContentType.ContentProviders: fileName = GlobalPaths.ContentProviderXMLName; break; case XMLContentType.PartColors: fileName = GlobalPaths.PartColorXMLName; break; default: break; } if (!noReload) { MessageBox.Show(fileName + " has been saved! The list will now reload.", "XML Content Editor - File Saved", MessageBoxButtons.OK, MessageBoxIcon.Information); LoadXML(ListType); } else { MessageBox.Show(fileName + " has been saved!", "XML Content Editor - File Saved", MessageBoxButtons.OK, MessageBoxIcon.Information); } }