/// <summary>Update the recent files menu</summary> public void UpdateMenu() { // Clear any menu items Items.Clear(); // Add a menu item for each filepath foreach (string f in Filepaths) { var item = new MenuItem() { Header = f, }; item.Click += (s, a) => { var menu = (MenuItem)s; Add((string)menu.Header, true); RecentFileSelected?.Invoke((string)menu.Header); }; item.PreviewMouseDown += (s, a) => { var menu = (MenuItem)s; if (a.ChangedButton == MouseButton.Right && a.ButtonState == MouseButtonState.Pressed) { var loc = a.GetPosition(menu); ShowMenuItemContextMenu(item, loc, () => IsSubmenuOpen = false); a.Handled = true; } }; Items.Add(item); } // Only add the clear all option if there is something to clear if (Items.Count != 0) { Items.Add(new Separator()); // Add a menu item for clearing the recent files list var clear_all = new MenuItem { Header = ResetListText, }; clear_all.Click += (s, a) => { Clear(); }; Items.Add(clear_all); } }
private void UpdateMenuItem() { // remove existing entries _menuItem.DropDownItems.Clear(); _menuItem.Enabled = _recentFiles.Count > 0; if (_menuItem.Enabled) { foreach (var recent in _recentFiles.Select((filename, index) => new { Index = index, Filename = filename })) { var menuItem = new ToolStripMenuItem($"&{recent.Index} {recent.Filename}") { Tag = recent.Filename }; menuItem.Click += (s, ev) => { string filePath = (string)((ToolStripMenuItem)s).Tag; if (!File.Exists(filePath)) { if (MessageBox.Show($"{filePath} not found, remove from recent files?", "File not found", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes) { RemoveRecentFile(filePath); } } else { RecentFileSelected?.Invoke(this, new RecentFileSelectedEventArgs() { Filename = filePath }); } }; _menuItem.DropDownItems.Add(menuItem); } } }