Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
167 / 139 / 23
Регистрация: 02.01.2011
Сообщений: 913
1

Показывать Context menu при клике на ячейку DGV

05.09.2012, 12:39. Показов 4212. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как работать с Context menu? Надо , чтобы при нажатии на правую кнопку мыши по DataGridView появлялось Context menu с 1 строкои Delete.Как это сделать? Спасибо!

Добавлено через 2 часа 6 минут
Вообщем, сделала, но осталась проблема с позициеи на экране, на которои появляется контекстне меню. ПОдскажите как правильно пересчитать координаты X, Y, чтобы меню вылезало на том месте, где кликнули правои клавишеи!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
       private void dgvUser_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                contextMenu1.Show(dgvUser, new Point(e.X, e.Y));// вот здесь координаты гуляют              //contextMenu1.Show(dgvUser, new Point(System.Windows.Forms.Cursor.Position.X,
                 //           System.Windows.Forms.Cursor.Position.Y));// а так совсем ужас
            }
 
        }
 
       
        public ContextMenuStrip contextMenu1 = new ContextMenuStrip();
 
        private void CreateContextMenuStrip()
        {
            ParserFile pa = new ParserFile();
            string strdelete = pa.GetResourceString("DeletingUser");
           
            MenuItem menuItem1 = new MenuItem(strdelete);
            contextMenu1.Items.Add(strdelete);
            contextMenu1.MouseClick += new MouseEventHandler(contextMenu1_MouseClick);   
 
        }
 
        void contextMenu1_MouseClick(object sender, MouseEventArgs e)
        {
            DeleteRowFromUserandSendTo();           
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2012, 12:39
Ответы с готовыми решениями:

при нажатии на кнопку показать context menu ИМЕННО НА ЭТОМ ЖЕ МЕСТЕ
Есть кнопка, при нажатии на нее нужно показать context menu, но не в точке(0,0) а в том же месте,...

При раскрытии TreeView показывать DGV
Можно ли при открытии вкладки "Ноутбуки" чтобы появился НоутбукиDataGridView. Если да. То каким...

При клике на Select не показывать дропдовн
Всем привет. делаю так <select ng-click="open(column, $event)" ng-options="data.id as...

Показывать календарь при клике по ячейкам DataGridView
Есть 4 грида, в каждом есть дата, нужно что бы при клике на поле появлялся рядом календарь, как в...

4
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
05.09.2012, 12:52 2
C#
1
Rectangle rectangle = dgv1.GetCellDisplayRectangle(dgv1.CurrentCell.ColumnIndex, dgv1.CurrentCell.RowIndex, true);//получить прямоугольник ячейки,подпили по себя
1
167 / 139 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.09.2012, 13:04  [ТС] 3
Noob.net, а можно подробнее. Ну получу и что дальше? Да, и еше я разрешаю пользователю максимилизовать форму(это на всякии случаи)

Добавлено через 4 минуты
Сделала так
C#
1
contextMenu1.Show(dgvUser, new Point(rectangle.Location.X,rectangle.Location.Y));
Уже лучше, но все-равно не на желаемом месте .Желаемое - это прямо , где кликнула правой кнопкои мыши
0
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
05.09.2012, 15:30 4
у меня этот кусок работает нормально.
C#
1
2
3
4
if(e.Button == MouseButtons.Right)
                contextMenuStrip1.Show(dataGridView1,e.Location);
//или это
 contextMenuStrip1.Show(dataGridView1,new Point(e.X,e.Y)); //тоже все замечательно
Добавлено через 5 минут
Цитата Сообщение от iva_a Посмотреть сообщение
C#
1
2
3
4
ParserFile pa = new ParserFile();
string strdelete = pa.GetResourceString("DeletingUser");
MenuItem menuItem1 = new MenuItem(strdelete);
contextMenu1.Items.Add(strdelete);
а зачем,осмелюсь спросить,вот это код? 0о

есть такое
C#
1
            contextMenuStrip1.Items.Add("Delete");
Добавлено через 2 минуты
Цитата Сообщение от iva_a Посмотреть сообщение
contextMenu1.MouseClick += new MouseEventHandler(contextMenu1_MouseClick);
зачем вам вручную добавлять обработку события на готовый компонент? или это не так?
0
167 / 139 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.09.2012, 15:43  [ТС] 5
У меня проект мультиязычныи, т.е. разные языки добавляю в зависимости от default language
Еше раз, спасибо ,Noob.net

Добавлено через 1 минуту
Да, и еше , я contextMenuStrip1 создаю программно, поэтому и подписываюсь на событие
1
05.09.2012, 15:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2012, 15:43
Помогаю со студенческими работами здесь

Как сделать при нажатии на context menu script, выполняется код timer.Start(); и при повторном нажатии выполняет код?
как сделать при нажатии на context menu script , выполняется код timer.Start(); и при повторном...

При каждом клике показывать один объект, а не все сразу
у меня есть функция клику. и я хочу чтобы каждый раз по клику новый обект показывался. а у меня...

Как запомнить индекс ячейки DGV при клике на ней
Подскажите пожалуйста, вот фотография, как можно реализовать следующее: Курсор мыши поставлена...

Context menu или?
Задача заключаеться в следующем, есть поле textbox как сделать так чтобы при нажатии правой кнопки...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru