4 / 4 / 0
Регистрация: 21.04.2012
Сообщений: 132

Событие мыши Mouse Down и получение координат при нажатой кнопке

21.04.2012, 13:13. Показов 33698. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
день добрый,

подскажите пожалуйста, как сделать так, что бы при нажатой кнопке мыши в области окна я мог отслеживать координаты. сейчас это выглядит вот так:
C#
1
2
3
4
5
6
7
8
  private void chart1_MouseDown(object sender, MouseEventArgs e) // обработка положения курсора на графике.
       {
           // пример, который отлавливает положение курсора при нажатом клике - chart features/ customization and events/ cursor position changing event
           // код - chart features / events / cursor position changed
           // отлавливает координаты только во время нажатия. не перехватывает, когда возишь мышку с нажатым кликом
           textBox1.Text = string.Format("x={0} или {1}", Form1.MousePosition.X, e.X);
           textBox2.Text = string.Format("y={0} или {1}", Form1.MousePosition.Y, e.Y);
       }
сейчас я получаю координаты только при клике мышью. а, мне нужно что бы я получал координаты курсора, если нажать на кнопку, держать и водить по области окна. если кнопку отпустить, но продолжать водить - координаты получать не надо.

всем спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2012, 13:13
Ответы с готовыми решениями:

При нажатой кнопке мыши обработать событие "вход курсора" на другой обьект
Задажа в том что нужно сделать такой принцип: опускаем клавишу миши и тягаем её по екрану (за ней следом склонированный обект на котором...

Событие мыши: перемещение мыши при нажатой левой клавиши
Подскажите, пожалуйста как реализовать следующее: При перемещении мыши при нажатой левой клавише (выделение текста) выводится сообщение...

Событие MouseMove при нажатой кнопке
Здравствуйте уважаемые программисты. Вот есть такой код: procedure TForm1.Panel1MouseLeave(Sender: TObject); begin ...

11
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
21.04.2012, 14:13
Не то событие отслеживаете:
C#
1
2
3
4
5
6
7
8
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left) //Или Right
    {
        textBox1.Text = string.Format("x={0} или {1}", Form1.MousePosition.X, e.X);
        textBox2.Text = string.Format("y={0} или {1}", Form1.MousePosition.Y, e.Y);
    }
}
1
4 / 4 / 0
Регистрация: 21.04.2012
Сообщений: 132
21.04.2012, 14:41  [ТС]
спасибо. вроде работает

Добавлено через 12 минут
вот, что получилось:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void chart1_MouseMove(object sender, MouseEventArgs e) // событие когда курсор мыши ездит по тиковому графику
       {
           if (e.Button == MouseButtons.Left) //проверка нажатия левой кнопки
           {
               textBox1.Text = string.Format("x= " + e.X);
               textBox2.Text = string.Format("y= " + e.Y);
 
               if (e.Y > 325 && e.Y < 365)  // проверка, что курсор ездит строго в под осью ОХ
               {
                   logging.log_add(this, "chart1_MouseMove", "курсор ездит под ОХ", 1);
               }
           }
       }
теперь еще вопрос: как, сделать, что бы когда курсор входит в зону, определенных координат - поменять его на другой? не на указатель а на двойную стрелку влево-вправо, которая появляется, когда берешь окно за правую или левую границу для изменения его размеров?
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
21.04.2012, 15:52
Ну во-первых, можно поставить на области прозрачные контролы. И у них отслеживать вход\выход курсора.

Или по координатам, используя операторы меньше и больше.
0
4 / 4 / 0
Регистрация: 21.04.2012
Сообщений: 132
21.04.2012, 16:53  [ТС]
спасибо. пробую.
0
 Аватар для druidich
30 / 30 / 12
Регистрация: 21.05.2012
Сообщений: 448
27.11.2012, 12:57
DimanRu, глупый вопрос но все же. как после нажатия на button определить координаты клика по форме.хочу что б нажать на кнопку "расположить" и по щелчку на форме определить координаты поставить textbox ?
0
 Аватар для Doomer3D
180 / 180 / 32
Регистрация: 23.11.2012
Сообщений: 344
Записей в блоге: 1
27.11.2012, 13:09
Цитата Сообщение от DimanRu Посмотреть сообщение
Ну во-первых, можно поставить на области прозрачные контролы. И у них отслеживать вход\выход курсора.
Это что за извращение?

Можно создать массив или список прямоугольников (Rectangle), проходить по ним в цикле и проверять нахождение мыши в нем, примерно так:

C#
1
2
3
4
5
6
7
8
9
foreach (Rectangle rect in rectangleList)
{
    if (rect.Contains(e.Location))
    {
        // попали в область
        this.Cursor = Cursors.<курсор>;
        break;
    }
}
Схема условная, но, думаю, понятно...
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
27.11.2012, 17:09
Цитата Сообщение от druidich Посмотреть сообщение
Как после нажатия на button определить координаты клика по форме.хочу что б нажать на кнопку "расположить" и по щелчку на форме определить координаты поставить textbox ?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool b = false;
 
private void button1_Click(object sender, EventArgs e)
{
    b = true;
}
 
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    if (b)
    {
        TextBox textBox1 = new TextBox();
        textBox1.Location = new Point(e.X, e.Y);
        this.Controls.Add(textBox1);
        b = false;
    }
}
0
SKY9T_SULIA
12.05.2013, 17:36
Вот, единственно правильное решение. Автор не я

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Point Point = new Point();
        int X, Y;
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons .Left )
            {
                Point = Control.MousePosition;
                Point.X = Point.X - (X);
                Point.Y = Point.Y - (Y);
               base.Location = Point;
        }
    }
 
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
            X = Control.MousePosition.X - base.Location.X;
            Y = Control.MousePosition.Y - base.Location.Y;
    }
1 / 1 / 0
Регистрация: 23.03.2014
Сообщений: 1
27.06.2014, 18:22
Windows Form C#:
Мое решение проблемы непрерывной обработки события MouseDown при перемещении мышки по форме. Допустим мы хотим рисовать на форме кривую, соответствующие движению мышки при нажатии MouseDown, а при отпускании прекращать рисование. Следующий код показывает одно из решений этой проблемы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
            }
 private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                Point ptMouse = e.Location;
                Bitmap pt = new Bitmap(1, 1);
                Graphics fG = this.CreateGraphics(); 
                pt.SetPixel(0, 0, Color.Black );
                fG.DrawImage(pt, ptMouse.X, ptMouse.Y);
              }
 private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                this.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
             }
1
Эксперт .NET
 Аватар для insite2012
5546 / 4309 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
27.06.2014, 18:34
alekspd, а не проще завести одну булевскую переменную уровня формы и ее использовать как флаг рисовать/не рисовать?

Не по теме:

И надо же вам было такую тему откопать... Динозавр прям...

0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
27.06.2014, 19:01
alekspd, выглядит интересно.
insite2012, в твоем случае событие так и будет выполнять постоянную проверку, а тут сразу отписался. Может пример и не самый удачный, но определенно можно развивать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.06.2014, 19:01
Помогаю со студенческими работами здесь

Рисование при нажатой кнопке мыши
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Canvas.MoveTo(X,Y);...

Прокрутка страницы при нажатой левой кнопке мыши
Есть такой код document.onmousedown = function(e) { e = e || window.event; down = 1; x = e.clientX; // начальное положение...

Cобытие MouseMove при нажатой левой кнопке мыши
Сделал у PictureBox событие MouseMove. Если просто провести мышкой над PictureBox все срабатывает, но если нажать левой(собственно правой...

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

Как обработать прокрутку мыши при нажатой кнопке Ctrl
Если конкретно, я хочу увеличивать/уменьшать изображение в TImage, если пользователь зажал ctrl и прокрутил колесико вверх/вниз ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Динамические массивы в C++ - создание и использование
NullReferenced 27.04.2025
Динамические массивы представляют собой один из фундаментальных инструментов программирования на C++, позволяющий создавать структуры данных, размер которых определяется во время выполнения. . .
Асинхронный JavaScript: Промисы, Async/Await и Fetch API
Reangularity 27.04.2025
Пользователь заходит на веб-страницу, нажимает кнопку и. . . ничего не происходит. Сайт словно замер. Через несколько секунд всё внезапно оживает, но пользователь уже успел закрыть вкладку. Знакомая. . .
Management on GitLab and repository management in Visual Studio code
jigi33 27.04.2025
- repo management on GitLab - CI/ CD in GitLab - VCS repository management in Visual Studio code (see attachments)
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru