.NET 4.x перемещение текста по форме - C#
Формулировка задачи:
Добрый вечер, я уже 2 недели мучаюсь над своим дз, оно вроде простое, да и вообще проблем с программированием никогда не было, всегда делал кучу заданий наперед и все понимал прекрасно, но хоть убейте не могу понять почему не работает..
условие такое:
Вывести по центру экрана строку текста. Затем курсором мыши
зацепить слово и перетащить его в произвольное место экрана.
После перемещения слова исходная строка переупорядочивается
так, чтобы в ней исчез пустой промежуток.
пока остановился на том что я даже не могу захватить и перенести этот чертов текст..
вот код:
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; } } } } }
Решение задачи: «.NET 4.x перемещение текста по форме»
textual
Листинг программы
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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д