Одним из способов является создание каскадного меню: в контекстном меню добавьте один элемент, который будет действовать как «родительский» элемент, и добавьте один дочерний элемент меню к родительскому элементу. Затем присоедините обработчик события для события DropDownOpening
родительского элемента и добавьте в него что-то вроде этого:
private void ParentMenuItem_DropDownOpening(object sender, EventArgs e)
{
IEnumerable<string> items = GetItems();
_parentMenuItem.DropDownItems.Clear();
foreach (var item in items)
{
_parentMenuItem.DropDownItems.Add(item);
}
}
Это будет заполнять дочернее меню каждый раз, когда оно открывается (добавляйте кеширование по мере необходимости).
Технически, это будет работать без добавления фиктивного дочернего элемента, но при добавлении дочернего элемента в родительском меню будет отображаться стрелка, указывающая на наличие каскадного дочернего меню.