Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
2 / 2 / 0
Регистрация: 22.03.2011
Сообщений: 56

Как отследить позицию мыши при нажатии?

10.04.2011, 22:38. Показов 5934. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скажите пожалуйста, как мне отследить положение (x, y) нажатия мыши?? Я пробовал в событии Click находить MousePosition, но получаться, при нажатии на другой элемент, событие не происходит! Подскажите, что мне делать??
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2011, 22:38
Ответы с готовыми решениями:

Почему при нажатии кнопки мыши происходит событие "перемещение мыши"?
Просто нажал на левую кнопку мыши и сразу же отпустил. А сам указатель мыши находится на месте Почему в этом случает возникает событие...

Как отследить нажатую и зажатую левую клавишу мыши?
Здравствуйте! Пишу программу которая будет отслеживать не только нажатую, но и "зажатую" левую клавишу мыши. На данный...

Отследить позицию мыши в monogame силами net
Народ кто знает подскажите как можно реализовать работу с мышью в обход моногеймовского класса Mouse? Надо как то до winForm достучатся?...

8
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
10.04.2011, 22:42
ну вообще - можешь на каждый контрол повесить обработку MouseClick...
C#
1
2
3
4
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show(e.X.ToString() + " " + e.Y.ToString());
        }
а так чтобы одно общее решение на все - даже не знаю...
1
2 / 2 / 0
Регистрация: 22.03.2011
Сообщений: 56
10.04.2011, 22:47  [ТС]
Тоже самое получаться, что при нажатии на Форму работает, а при нажатии на другой элемент(который находиться сверху),нет...
0
 Аватар для Kayak
10 / 10 / 1
Регистрация: 02.04.2011
Сообщений: 95
10.04.2011, 23:23
Если это то о чем я подумал - пользуйся globalhook
1
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
10.04.2011, 23:24
ну так читай внимательнее...я же сказал, что подобные куски надо создавать ДЛЯ КАЖДОГО контрола на твоей форме...
ну и не забывать о том, что таким кодом выведешь положения курсора относительно самого контрола, то есть надо будет плюсовать его положение...
1
19 / 19 / 4
Регистрация: 29.10.2009
Сообщений: 150
10.04.2011, 23:30
а относительно чего нужно получать координаты?
попробуй класс Mouse в System.Windows.Input или Cursor в System.Windows.Forms
также в Control есть свойство MousePosition.
1
2 / 2 / 0
Регистрация: 22.03.2011
Сообщений: 56
11.04.2011, 00:00  [ТС]
Цитата Сообщение от znake Посмотреть сообщение
ну так читай внимательнее...я же сказал, что подобные куски надо создавать ДЛЯ КАЖДОГО контрола на твоей форме...
ну и не забывать о том, что таким кодом выведешь положения курсора относительно самого контрола, то есть надо будет плюсовать его положение...
Просто у меня 64 элемента. И для каждого делать???
Нужно находить положение X:Y относительно формы при нажатии на любой её элемент, или на неё...

Добавлено через 24 минуты
всё, всем спасибо! я понял! я для каждого объекта подключил одно событие, а в нём уже смотрел позицию, относительно Form...
0
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
11.04.2011, 00:09
Ну получить координаты можно так:
C#
1
2
int X=System.Windows.Forms.Cursor.Position.X-this.Left;
int Y = System.Windows.Forms.Cursor.Position.Y - this.Top;
У вас 64 элемента, я так понимаю, что на них есть событие клика, ну или чего то подобного, ну вот и напишите этот код в них. если нет-то можно прописать что бы при событии клика все компоненты обращались к одному методу в котором будут 2-е эти строки....не устраивает, тогда ставьте на форму таймер в обработчике тика пишите:
C#
1
2
3
4
5
if (GetAsyncKeyState(1) != 0)
{
int X=System.Windows.Forms.Cursor.Position.X-this.Left;
int Y = System.Windows.Forms.Cursor.Position.Y - this.Top;
}
GetAsyncKeyState это винапи функция, ее надо подключить, делается это так
C#
1
2
3
4
5
6
7
8
9
using System.Runtime.InteropServices;
............
public Form1()
{
       InitializeComponent();
}
 
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);
если таймер вас не утраивает....тогда только хуки
2
2 / 2 / 0
Регистрация: 22.03.2011
Сообщений: 56
11.04.2011, 00:43  [ТС]
Спасибо большое! мой способ так и не заработал правильно, а вот ваш, только один минус у этого метода, он не вычитает шапку Form1, и слева немного. просто я отталкивался из Position объектов, а Position не берёт во внимание это. Но ничего, мне и этого хватит!! Спасибо!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2011, 00:43
Помогаю со студенческими работами здесь

Как отследить клик мыши при нажатой клавише Ctrl?
Всем здравствуйте. Нужно выполнить команду только в том случае, если пользователь кликнул по кнопке мышкой удерживая при этом нажатой...

При нажатии средней кнопки мыши, а также при нажатии на ссылки в браузере Firefox открываются рекламные сайты
При нажатии средней кнопки мыши, а также при нажатии на ссылки в браузере Firefox открываются рекламные сайты Антивирус касперского...

Как отследить статус клавиши CTRL при нажатии на кнопку ToggleButton?
Нужно при нажатии ToggleButton поймать - нажата ли в этот момент клавиша контрол и в соответсвии с этим добавить к Caption тоггла символ...

Вывод и удаление символа в координатах курсора мыши при нажатии на кнопки мыши
У меня есть вот такая задача: ПРи нажатии правой кнопки мыши обеспечить вывод на монитор по координатах x y курсора некторого символа ,...

Как сделать рисование при нажатии мыши?
Ребят подскажите как сделать чтобы при нажатии мышки рисовало. Т.к у меня сейчас нажимаю и рисую потом опять нажимаю и он перестает...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru