Я хотел бы разрешить пользователю перетаскивать кнопку вправо или вправо (+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;
}
}
Попробуй это:
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;
}