如何将窗口窗体按钮拖动到特定点,但仅在选中新点后';s的位置

本文关键字:新点 位置 窗体 按钮 窗口 拖动 | 更新日期: 2023-09-27 18:29:34

我希望允许用户根据用户拖动按钮的方向将按钮向右(+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;
    }
}   

如何将窗口窗体按钮拖动到特定点,但仅在选中新点后';s的位置

试试这个:

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