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

перемещение текста по форме

12.03.2013, 19:24. Показов 929. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, я уже 2 недели мучаюсь над своим дз, оно вроде простое, да и вообще проблем с программированием никогда не было, всегда делал кучу заданий наперед и все понимал прекрасно, но хоть убейте не могу понять почему не работает..

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

пока остановился на том что я даже не могу захватить и перенести этот чертов текст..
вот код:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace KeyAndMouse
{
    public partial class Form1 : Form
    {
        public int xPos, yPos;
        public Point mouseDownLocation;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            xPos = (ClientSize.Width - label1.Width)/2;
            yPos = (ClientSize.Height - label1.Height)/2;
            label1.Location = new Point(xPos, yPos);
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            mouseDownLocation.X = e.X;
            mouseDownLocation.Y = e.Y;
        }
 
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode==Keys.XButton1)
            {
                if ((mouseDownLocation.X >= label1.Location.X) && (mouseDownLocation.Y >= label1.Location.Y) &&
                    (mouseDownLocation.X <= (label1.Size.Width + label1.Location.X)) &&
                    (mouseDownLocation.Y <= (label1.Size.Height + label1.Location.Y)))
                {
                    label1.Location = mouseDownLocation;
                }
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2013, 19:24
Ответы с готовыми решениями:

Плавное перемещение картинок в форме
Привет всем форумчанам. Вобщем нужна помощь. Необходимо, чтоб при наведении на изображение мышью, оно плавно двигалось вправо до заданой...

Перемещение объекта по форме
Есть Окно которое содержит несколько кнопок, canvas, на canvas имеется UserControl. При нажатии на одной и кнопок, UserControl должен...

Перемещение кнопки по форме
Здравствуйте! Хотел у вас спросить, как можно реализовать перемещение кнопки мышью по форме? Ранее я это делал в WinForm вот так: bool...

2
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
12.03.2013, 21:22
На форме:
C#
1
2
        private System.Windows.Forms.TextBox myTextBox;
        private System.Windows.Forms.ToolTip myToolTip;
По существу:
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
31
32
        private void panel1_MouseDown( object sender, MouseEventArgs e )
        {
            Point mouseInTextBox = myTextBox.PointToClient( new Point( e.X, e.Y ) );
 
           if( mouseInTextBox.X < 0 || mouseInTextBox.X >= myTextBox.Width ||
                mouseInTextBox.Y < 0 || mouseInTextBox.Y >= myTextBox.Height )
                return;
 
            _draggedIndex = myTextBox.GetCharIndexFromPosition( mouseInTextBox );
            // определить кликнутое слово, исходя из индекса кликнутого символа _draggedIndex:
            _draggedWord;
            _dragging = true;
        }
        private void panel1_DragOver( object sender, DragEventArgs e )
        {
            if( _dragging )
                // соль, сахар по вкусу, можно отображать перетаскиваемое слово по-другому
                // не смотрел, как это будет выглядеть
                myToolTip.Show( _draggedWord, this, e.X, e.Y ); 
        }
        private void panel1_DragDrop( object sender, DragEventArgs e )
        {
            Point mouseInTextBox = myTextBox.PointToClient( new Point( e.X, e.Y ) );
            Int32 clickedIndex = myTextBox.GetCharIndexFromPosition( mouseInTextBox );
            // определить кликнутое слово, исходя из индекса кликнутого символа clickedIndex:
            // переупорядочить строку
            _dragging = false;
        }
 
        String _draggedWord;
        Boolean _dragging = false;
        Int32 _draggedIndex;
Написано с Божией помощью.

Ну и такую же проверку на попадание нужно сделать в DragDrop. Лениво уже дописывать.
1
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 7
12.03.2013, 22:50  [ТС]
GoldenId, идею понял, буду пробовать, спасибо ;-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2013, 22:50
Помогаю со студенческими работами здесь

Перемещение элементов по форме
В обще пытаюсь разобраться, как таскать элементы по форме. Вроде что то вышло, но не так как я планировал. Элемент перемещается, но только...

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

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

Перемещение элементов по форме
Здравствуйте! Есть форма с кнопкой и еще какими-либо элементами, кнопку перемещаю по форме с помощью mousedown, mouseup и mousemove. Как...

Перемещение изображений по форме
Привет! Помогите, пожалуйста! Есть форма, на неё загружаются n-ое кол-во изображений. После того, как таймер отсчитает нужное кол-во...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru