private void RefreshList() { listView1.Items.Clear(); bool hasChanged = false; foreach (ShortcutKeyGroup group in ShortcutKeyGroup.AllGroups) { var lvg = new ListViewGroup(Lang._(group.Name)); listView1.Groups.Add(lvg); foreach (var key in group.Keys) { ListViewItem lvi = new ListViewItem(Lang._(key.Name), lvg); lvi.SubItems.Add(key.KeysToString()); if (!string.IsNullOrEmpty(key.Description)) { lvi.SubItems.Add(Lang._(key.Description)); } lvi.Tag = key; listView1.Items.Add(lvi); hasChanged |= key.Changed; #if DEBUG // test invalid shortcuts if (key.Keys != Keys.None && !KeyMap.IsValidKey(key.Keys)) { lvi.ForeColor = System.Drawing.Color.Red; } #endif if (key.Image != null) { listView1.SmallImageList.Images.Add(key.Image); lvi.ImageIndex = listView1.SmallImageList.Images.Count - 1; } } } Changes.Clear(); BtnReset.Enabled = hasChanged; OKButton.Enabled = false; }