Я пытаюсь создать контекстное меню, в которое можно будет добавлять дополнительные пункты меню с вложенным дочерним меню, если это необходимо. Я пытался сделать это, поэтому у меня есть отдельные классы, создающие каждую часть, чтобы она могла быть красиво написана с объектами.
Проблема, с которой я столкнулся, заключается в том, что метод AddRange для ContextMenuStrip не имеет конструктора для работы с моим объектом. Я пытался преобразовать его в тип ToolStripMenuItem с операторами, которые не работали, как я подозревал, что это не будет.
Я уверен, что это может быть достигнуто, поэтому я предполагаю, что я что-то подумал неправильно. Есть ли способ обойти это, или я ударился головой о стену с моей нынешней структурой?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Context
{
class TestMenu
{
public TestMenu()
{
ContextMenuStrip filesToUploadContext = new System.Windows.Forms.ContextMenuStrip();
// Hot Folder Header
ToolStripMenuItem hotHead = new System.Windows.Forms.ToolStripMenuItem();
// Holder for files in Hot Folder
ParentItem hotFile; // foreach
// Dropped Files Header
ToolStripMenuItem dropHead = new System.Windows.Forms.ToolStripMenuItem();
// Holder for files that have been dragged and dropped in
ParentItem dropFile; // foreach
ToolStripSeparator toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
ToolStripSeparator toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
filesToUploadContext.Items.AddRange(new ToolStripItem[] {
hotHead,
toolStripSeparator1,
hotFile, // Not a toolStrip item
dropHead,
toolStripSeparator2,
dropFile // also not a toolStrip item
});
//// Testing stuff vv
//// Hot Folder
//hotFile.DropDownItems.AddRange(new ToolStripItem[]
// {
// viewHot,
// deleteHotFile
// });
//// Dropped Items Folder
//dropFile.DropDownItems.AddRange(new ToolStripItem[]
// {
// viewDrop,
// removeDropFile
// });
//// Hot Folder Section Heading
//hotHead.Name = "hotHead";
//hotHead.Text = "Hot Folder Files";
//hotHead.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
//// Drop Folder Section Heading
//dropHead.Name = "dropHead";
//dropHead.Text = "Dropped Files";
//dropHead.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
}
class ParentItem
{
// MenuItem to be used for found files
// Options will contain child items
public ToolStripMenuItem name = new ToolStripMenuItem();
public ChildMenu options { get; set; }
public ParentItem();
}
class ChildMenu
{
// Options available for specific files at end of menu tree
public ToolStripMenuItem view = new ToolStripMenuItem("View File");
public ToolStripMenuItem delete = new ToolStripMenuItem("Delete File");
public ToolStripMenuItem remove = new ToolStripMenuItem("Remove File");
public ChildMenu();
}
}
}