Как мне перетащить кнопку формы окна в определенную точку, но только после проверки положения новой точки?

1

Я хотел бы разрешить пользователю перетаскивать кнопку вправо или вправо (+X) или влево (-X) в зависимости от того, в каком направлении пользователь перетаскивает кнопку. Я новичок в формах Windows, и мне было бы интересно прогуливаться. (В моем примере я жестко закодировал новый шаг на 10 пикселей, но хочу, чтобы пользователь мог перетащить кнопку, насколько он хочет), Вот мой текущий код:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
        Load +=Form1_Load;

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    bool isDragged = false;


    private void button1_MouseDown(object sender, MouseEventArgs e)
    {

        if (e.Button == MouseButtons.Left)
        {
            isDragged = true;
        }
        else
        {
            isDragged = false;
        }
    }

    private void button1_MouseMove(object sender, MouseEventArgs e)
    {

        if (isDragged)
        {
            button1.Location = new Point(button1.Location.X + 10, button1.Location.Y); 
        }

        isDragged = false;
    }
}   
Теги:
winforms

1 ответ

0

Попробуй это:

private Point mouseDown, buttonLocation;
private bool isDragged = false;

private void button1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        isDragged = true;

        mouseDown = Cursor.Position;
        buttonLocation = button1.Location;
    }

}

private void button1_MouseMove(object sender, MouseEventArgs e)
{
    if (isDragged)
    {
        button1.Location = new Point(buttonLocation.X + (Cursor.Position.X - mouseDown.X), button1.Location.Y);
    }
}

private void button1_MouseUp(object sender, MouseEventArgs e)
{
    isDragged = false;
}
  • 0
    Кнопка по-прежнему перемещает только каплю в любом направлении, но не длину перетаскивания.
  • 0
    @MirrorEyes Для меня это нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню