Сделайте бесконечную серию меню в C#

Во время разработки я дал программе главное меню Инструменты с пунктом меню «Инструменты». Оба эти пункта меню используют следующий DropDownOpening обработчик событий, чтобы действовать, когда они открываются.

// Этот пункт меню открывается.
// Добавить элемент в подменю этого элемента.
private void mnuTools_DropDownOpening(object sender, EventArgs e)
{
    Console.WriteLine("mnuTools_DropDownOpening");
    // Удаление обработчика события этого элемента.
    ToolStripMenuItem menu = sender as ToolStripMenuItem;
    menu.DropDownOpening -= mnuTools_DropDownOpening;

    // Найти подменю.
    ToolStripMenuItem submenu = 
        (ToolStripMenuItem)menu.DropDownItems[0];

    // Добавить элемент подменю.
    ToolStripMenuItem new_item = new ToolStripMenuItem("&Tools");
    new_item.DropDownOpening += mnuTools_DropDownOpening;
    submenu.DropDownItems.Add(new_item);
}

Этот обработчик событий обнаруживает пункт меню, который открывается и удаляет обработчик события, поэтому этот код не будет снова выполнен для этого элемента позже.

Затем он находит отдельный подпункт элемента. Этот элемент еще не открыт и еще не содержит каких-либо подпозиций, поэтому, если код ничего не сделал, подпункт будет отображаться как обычный пункт меню, а не каскадное меню. Чтобы исправить это, код добавляет новый элемент меню в подпункт. Он устанавливает обработчик события DropDownOpening нового элемента тем же, что используется другими элементами меню, чтобы он мог продолжить игру, когда он в конце концов открывается.

Источник: http://csharphelper.com/blog/2015/05/make-an-infinite-series-of-menus-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector