Di chuyển Label theo con trỏ chuột

Em vừa bắt đầu học WinForm thầy có đưa 1 bài tập là Tạo 1 button khi click vào button sẽ tạo ra 1 Label. Và khi nhấn giữ label đó sẽ di chuyển được theo vị trí chuột.
Em đã tạo được Event tạo label khi Click vào button. Nhưng đang bị mắc lại ở phần tạo event move cho Label. Mọi người hướng dẫn giúp em với ạ.
Đây là đoạn code Event Click button của em ạ.

private void Button1_Click(object sender, EventArgs e)

      {
         var lb = new Label();
          Random rd = new Random();
         lb.Location = new Point(rd.Next(0, 500), rd.Next(100, 200));
          lb.Text = string.Format("Label");
          Controls.Add(lb);
        }

Giờ thì hết kéo thả rồi nha.
Tiếp theo là bắt 3 sự kiện MouseDown, MouseMoveMouseUp cho Label mới đó.

  • MouseDown: ghi nhận vị trí trỏ chuột.
  • MouseMove: tính toán độ dịch chuyển dựa vào tọa độ đã ghi nhận để di chuyển Label theo chuột.
  • MouseUp: kết thúc việc di chuyển.
1 Like

Em đang mắc ngay chỗ bắt sự kiện cho label đó ạ.
Vì label là đối tượng tạo sau khi chạy nên em chưa biết bắt thế nào ạ. Anh có thể vd hoặc hướng dẫn em 1 chút không ạ

Vâng! Có thể xem là hậu quả của “kéo thả”.

  1. Ví dụ ở máy của bạn luôn. Chuột phải vào tập tin “FormXXX.designer.cs” chọn View Source và xem “ví dụ” do chính bạn tạo ra. Cái tâp tin mà mở phần “kéo thả” ấy. Mà nhớ, đừng tự ý sửa nó, nếu không muốn ăn hành.
  2. Trên mạng có mà đầy. Từ khóa: C# add event example. Mình tìm thì kết quả đầu tiên là của MSDN và cho C# WinForm luôn.
2 Likes

Add sự kiện:

Viết tên control + . Sau đó chọn tên sự kiện (tia sét vàng) -> viết thêm += và ấn tab 2 lần.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?