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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы