.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;