Можно ли создать контекстное меню из нескольких столбцов в .NET Windows Forms? - PullRequest
5 голосов
/ 12 января 2012

Я хочу создать контекстное меню, которое имеет несколько столбцов. В основном это будет выглядеть так:

First item  | [common option] | All Options >
Second item | [common option] | All Options >
Third item  | [common option] | All Options >
Fourth item | [common option] | All Options >

Таким образом, в основном существует множество элементов (генерируемых во время выполнения), каждый элемент может быть запущен сам по себе; или с обычно используемой опцией; или вы можете получить подменю со всеми возможными опциями.

Как я могу это сделать? Я пытаюсь злоупотребить ContextMenuStrip и ContextMenu, но, похоже, у них нет таких вариантов. Тем не менее, я помню, что видел где-то многоколоночные меню ...

Я бы предпочел решение Windows Forms, потому что у меня нет опыта работы с WPF. Да, и это контекстное меню откроется при нажатии на значок в области уведомлений (он же systray).

Ответы [ 2 ]

5 голосов
/ 12 января 2012

Я не знаю, что такое ContextMenuStrip, это меню, построенное полностью из кода .NET, но вы определенно можете сделать это с помощью ContextMenu, который является оболочкой для системных меню.

Ключ задает флаги MFT_MENUBREAK или MFT_MENUBARBREAK для отдельных элементов меню, которые отображаются как свойства в оболочке MenuItem class : MenuItem.Break и MenuItem.BarBreak соответственно.

Первый из них просто помещает элемент меню в новый столбец, а второй помещает элемент в новый столбец и разделяет столбец с вытравленной вертикалью.line.

Из примера MSDN:

public void CreateMyMenus()
{
    // Create three top-level menu items.
    MenuItem menuItem1 = new MenuItem("&File");
    MenuItem menuItem2 = new MenuItem("&New");
    MenuItem menuItem3 = new MenuItem("&Open");

    // Set the BarBreak property to display horizontally.
    menuItem2.BarBreak = true;
    menuItem3.BarBreak = true;

    // Add menuItem2 and menuItem3 to the menuItem1's list of menu items.
    menuItem1.MenuItems.Add(menuItem2);
    menuItem1.MenuItems.Add(menuItem3);
}
0 голосов
/ 12 января 2012

Меню в WinForms могут быть построены только как деревья: вы можете иметь подменю под каждым элементом.Таким образом, вы можете поместить общий параметр в качестве первого элемента подменю.

Он не может выглядеть иначе, если вы не создадите свой собственный элемент управления (и тогда WPF намного больше подходит для этой задачи, но WPF требует многовремя учиться).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...