private void UpdateEnumType() { foreach (ListViewItem item in listViewMembers.Items) { EnumParserTypeEntry entry = (EnumParserTypeEntry)item.Tag; item.Text = entry.Name; if (_enumType.IsFlags) { item.SubItems[1].Text = String.Format("0x{0:X}", entry.Value); } else { item.SubItems[1].Text = entry.Value.ToString(); } } }
private void listViewMembers_AfterLabelEdit(object sender, LabelEditEventArgs e) { if (e.Label != null) { try { EnumParserTypeEntry entry = (EnumParserTypeEntry)listViewMembers.Items[e.Item].Tag; entry.Name = e.Label; propertyGrid.SelectedObject = entry; } catch (ArgumentException ex) { MessageBox.Show(this, ex.Message, CANAPE.Properties.Resources.MessageBox_ErrorString, MessageBoxButtons.OK, MessageBoxIcon.Error); e.CancelEdit = true; } } }
private void AddEnumEntryToList(EnumParserTypeEntry entry, bool editName) { ListViewItem item = listViewMembers.Items.Add(entry.Name); if (_enumType.IsFlags) { item.SubItems.Add(String.Format("0x{0:X}", entry.Value)); } else { item.SubItems.Add(entry.Value.ToString()); } item.Tag = entry; if (editName) { item.BeginEdit(); } }
private void addEntryToolStripMenuItem_Click(object sender, EventArgs e) { if (_enumType != null) { long value = 0; HashSet <long> values = new HashSet <long>(); string name = GenerateName(); if (name != null) { foreach (EnumParserTypeEntry ent in _enumType.Entries) { if (!values.Contains(ent.Value)) { values.Add(ent.Value); } } if (!_enumType.IsFlags) { if (values.Count > 0) { value = values.Max() + 1; } } else { // Find the next positive enum value for simplicity for (value = 1; value < 0x4000000000000001L; value <<= 1) { if (!values.Contains(value)) { break; } } } EnumParserTypeEntry entry = new EnumParserTypeEntry(name, value); _enumType.AddEntry(entry); AddEnumEntryToList(entry, true); } } }