Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        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);
                }
            }
        }