Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 05.09.2017
Сообщений: 12

Координаты создаваемого элемента

12.09.2017, 13:23. Показов 1115. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите разобраться.
Пример в архиве.

Создаю АС (правой клавишей), создается где-то не там где я щелкнул.
И при перемещение также убегает от курсора.

Мозги уже плавятся.

В программировании новичок, поэтому не судите строго в коде.

Спасибо.
Вложения
Тип файла: 7z WindowsFormsApp11.7z (152.3 Кб, 2 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2017, 13:23
Ответы с готовыми решениями:

Найти координаты элемента на экране (поиск картинки на картинке)
Есть две картинки Первая допустим - красный квадрат А вторая - скриншот экрана, на котором где то есть этот красный квадрат. Как...

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

Как указать координаты элемента относительно формы, а не панели, на которой он размещен?
Как указать координаты элемента относительно формы, а не панели, на которой он размещен? На форме несколько панелей. pictureBox1...

5
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
12.09.2017, 13:43
Переделайте метод нажатия мыши в Tabpage на такой:

C#
1
2
3
4
5
6
7
8
9
10
11
private void tabPage1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                Program.mouseX = e.X; 
                Program.mouseY = e.Y;
                contextMenuStrip1.Show(new Point(Cursor.Position.X, Cursor.Position.Y));
                textBox1.Text = Convert.ToString(Program.mouseX);
                textBox2.Text = Convert.ToString(Program.mouseY);
            }
        }
вы получаете координаты общего окна и на его основе строите контрол, а нужно координаты на основе TabPage
1
0 / 0 / 0
Регистрация: 05.09.2017
Сообщений: 12
12.09.2017, 13:48  [ТС]
О спасибо.
А со второй проблемой не подскажите? "И при перемещение также убегает от курсора."
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
12.09.2017, 16:20
примерно так как-то, можно думаю и иначе но нет времени
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
29
30
public void menu_MouseDown(object sender, MouseEventArgs e)
        {
 
            Class1.numLabel = (Label)sender;
 
            if (e.Button == MouseButtons.Right) //Если нажата правая кнопка мыши
            {
                Form1 main = this.Owner as Form1;
                main.contextMenuStrip2.Show(new Point(Cursor.Position.X, Cursor.Position.Y));
 
                Class1.numLabel = (Label)sender;
            }
            else if (e.Button == MouseButtons.Left && sender is Label)
            {
                _isMove = true;
                x = Class1.numLabel.Location.X;
                y = Class1.numLabel.Location.Y;
            }
        }
private int x = 0;
private int y = 0;
private bool _isMove = false; 
        void Form2_MouseUp(object sender, MouseEventArgs e)
        {
            if (_isMove)
            {
                (sender as Label).Location = new Point(x + e.X, y + e.Y);
                _isMove = false;
            }
        }
0
0 / 0 / 0
Регистрация: 05.09.2017
Сообщений: 12
13.09.2017, 08:18  [ТС]
голова вообще у меня не варит. что то не получается. более менее работает вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 private void menu_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left) // или любую другую, какая удобнее
            {
                Form1 main = this.Owner as Form1;
 
                Point pos = new Point(Cursor.Position.X - main.Location.X, Cursor.Position.Y - main.Location.Y);
                Class1.numLabel.Location = PointToClient(pos);
                                
                main.textBox1.Text = Convert.ToString(x);
                main.textBox2.Text = Convert.ToString(y);
 
                INIFile ini = new INIFile(".\\Data.ini");
 
                ini.Write("Button" + Class1.numLabel.TabIndex, "x", Convert.ToString(Class1.numLabel.Location.X));
                ini.Write("Button" + Class1.numLabel.TabIndex, "y", Convert.ToString(Class1.numLabel.Location.Y));
 
            }
        }]
но все равно бегает label от курсора

Добавлено через 8 часов 1 минуту
И так получилось. Если честно - не пойму откуда взялись те константы (35 и 110) но складывается ощущение - это на сколько опущена tabControl относительно главного окна. Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void menu_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left) // или любую другую, какая удобнее
            {
                Form1 main = this.Owner as Form1;
 
 
                Class1.numLabel.Location = new Point(Cursor.Position.X - main.Location.X-35, Cursor.Position.Y - main.Location.Y-110);
 
                main.textBox1.Text = Convert.ToString(x);
                main.textBox2.Text = Convert.ToString(y);
 
                INIFile ini = new INIFile(".\\Data.ini");
 
                ini.Write("Button" + Class1.numLabel.TabIndex, "x", Convert.ToString(Class1.numLabel.Location.X));
                ini.Write("Button" + Class1.numLabel.TabIndex, "y", Convert.ToString(Class1.numLabel.Location.Y));
 
            }
        }
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
13.09.2017, 10:01
stensilart, я тебе скинул код который работает и перемещает, зачем велосипед городить из непонятных чисел? не нравится вариант, просто посмотри как реализовано и сделай сам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2017, 10:01
Помогаю со студенческими работами здесь

Есть ли способ получить координаты какого-либо значения элемента двумерного массива за константное время?
Есть ли способ получить координаты какого-либо значения элемента двумерного массива за константное время? Например, есть двумерный...

Как идентифицировать процесс создаваемого приложения
Я создаю приложение Excel: using Excel = Microsoft.Office.Interop.Excel; /* ............. */ Excel.Application app = new...

Через ComboBox задавать поля для создаваемого объекта
Хочу через комбобокс задавать поля для создаваемого объекта, пытался засунуть объект в комбобокс через "источники данных" но...

Не вызывается метод OnPaint для динамически создаваемого компонента
Всем привет. Есть следующий код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Высота/ширина динамически создаваемого элемента
Внутри таблицы создаю ImageButton и пытаюсь установить у нее высоту и ширину. //создаем таблицу TableLayout tableLayout =...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru