Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236

Классы ContextMenuStrip и ToolStripMenuItem, как пользоваться

11.01.2015, 19:20. Показов 4154. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С того момента как занялся программирование у меня рабочий стол завален всякого разного рода файлами, ярлыками и т.д. и для систематизации всего я придумал такую штуку - программу.

Я создаю папку, в этой папке все распихиваю по папкам, примерно так:
Я создаю папку "C:\fast", в ней я создаю папку "Browsers", "CodeEditors", "Games", так же в папку "fast" помещаю ярлык на калькулятор, в папке "Browsers" у меня ярлыки на браузеры мазилла, опера, хром; в папке "CodeEditors" ярлыки на notepade++, Visual Studio, NetBeans и т.д.;
в папке "Games" соответственно ссылки на игры.
Сама программа при свертывании / закрытии сворачивается в трей и в трее присутствуют ее значок соответственно.
В настройках я указываю путь к этой папке, и потом при клике на значок в трее у меня появляется многоуровневое меню соответствующее папкам и вложениям, примерно как то так:


только на картинке все наспех сделано, там еще должны быть иконки (icon) соответствующие файлу, ну и еще возможно что то.
По клику должно происходить открытие файла / папки.

т.е. мне надо создавать это меню динамически, исходя из файлов, расположенных в папках.

На этом то меню я затормозил, не могу понять как сделать и информации не могу найти (с английским не очень дружу).

пытался как то так сделать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Menu
{
    public static ContextMenuStrip menu;
    
    public static void createMenu()
    {
        menu = new ContextMenuStrip();
        
        ToolStripMenuItem one = new ToolStripMenuItem();
        one.Name = "one";
        one.Text = "one";
        
        ToolStripMenuItem two = new ToolStripMenuItem();
        two.Name = "two";
        two.Text = "two";
        
        menu.Items.Add(one);
        menu.Items.Add(two);
    }
}
а непосредственно в форме я добавляю из конструктора ContextMenuStrip, ему присваивается название contextMenuStrip1 и в инициализации формы я пишу так:
C#
1
2
3
4
5
6
7
8
9
10
11
public partial class Form1 : Form
{
    // .......... тут еще какие то методы
    public Form1()
    {
        InitializeComponent();
        Menu.createMenu();
        this.contextMenuStrip1 = Menu.menu;
    }
    // .......... тут еще какие то методы
}
но в итоге при клике меню просто не появляется, подскажите как работать с этими классами, что бы все работало
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.01.2015, 19:20
Ответы с готовыми решениями:

С# как добавить ContextMenuStrip к ToolStripMenuItem?
В общем у меня есть меню, и при нажатии на один из ToolStripMenuItem, хочу что бы показывалось контекстное меню с моими кнопками. Как можно...

ContextMenuStrip изменить текст ToolStripMenuItem
вопрос как изменять текст?

"Перенести" из ToolStripMenuItem кнопки в ContextMenuStrip
Здравствуйте, уважаемые форумчане, возник вопрос, суть которого в теме. Есть панель с кнопками. Требуется динамически добавить в...

3
 Аватар для aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
12.01.2015, 14:21
как вариант могу предположить только что можно добавить на форму сам MenuStrip и на нем отрабатывать события OnClick и прочие. Но вряд ли вам это подойдет. А так - msdn/stackoverflow и google/yandex переводчик. Или как вариант-скооперироваться с кем-то из знающих и, если его заинтересует проект, сделать его вместе
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,101
12.01.2015, 15:37
Лучший ответ Сообщение было отмечено VLK как решение

Решение

C#
1
2
3
4
5
6
7
public Form1()
    {
        InitializeComponent();
        Menu.createMenu();
        this.ContextMenuStrip = Menu.menu;
        this.notifyIcon1.ContextMenuStrip = Menu.menu;
    }
2
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.01.2015, 15:57  [ТС]
Спасибо, помогло

Подскажите еще такое, вот смотрите, я навожу на меню и оно выезжает в правую сторону, если в правой стороне нет места, то влево, а возможно ли задать что бы всегда выезжало только в левую сторону?

Добавлено через 14 минут
а то перебрал кучу свойств классов ContextMenuStrip и ToolStripMenuItem, но ни где не нашел.

Добавлено через 16 часов 54 минуты
Нашел, как не странно все было перед носом, за направление меню (влево или вправо) отвечает свойство DropDownDirection, объекта ToolStripMenuItem.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2015, 15:57
Помогаю со студенческими работами здесь

Клик одного ToolStripMenuItem должен вызвать код другого ToolStripMenuItem
Добрый день всем! Подскажите пожалуйста, кто может! C# В форме есть меню, по нажатию мышью запускается на выполнение код: ...

Динамическое создание ToolStripMenuItem: Нельзя применить индексацию к ToolStripMenuItem
Пробовал стандартными методами, вышла ошибка, что нельзя применить индексацию к ToolStripMenuItem. Собственно тогда как?

как пользоваться программатором для Whirlpool, раздобыл программатор, а как им пользоваться я не знаю
подскажите плиз

Как убрать синее свечение у ToolStripMenuItem в menuStrip?
Делаю простое приложение в windows forms, но понадобилось использовать menuStrip. Я поместил ToolStripMenuItem в menuStrip, но при нажатии...

как получить экранные координаты пунка меню ToolStripMenuItem
Хочу получить координаты пункта меню ToolStripMenuItem, т.е. точку Point его верхнего левого угла. Цель: чтобы по щелчку мышки по пункту...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru