Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Cách thay đổi con trỏ chuột C# - Di chuyển form với con trỏ chuột

    Hướng dẫn cách thay đổi con trỏ chuột C#
    Những sự kiện liên quan: MouseDown, MouseUp

    Đầu tiên thêm các dòng code này vào Form

    Mã:
    using System.Runtime.InteropServices;  public struct IconInfo{            public bool fIcon;            public int xHotspot;            public int yHotspot;            public IntPtr hbmMask;            public IntPtr hbmColor;}[DllImport("user32.dll")]public static extern IntPtr CreateIconIndirect(ref IconInfo icon);[DllImport("user32.dll")][return: MarshalAs(UnmanagedType.Bool)]public static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo); //public static Cursor CreateCursor(Bitmap bmp, int xHotSpot, int yHotSpot){            IntPtr ptr = bmp.GetHicon();            IconInfo tmp = new IconInfo();            GetIconInfo(ptr, ref tmp);            tmp.xHotspot = xHotSpot;            tmp.yHotspot = yHotSpot;            tmp.fIcon = false;            ptr = CreateIconIndirect(ref tmp);            return new Cursor(ptr);}
    Code hoàn chỉnh

    Mã:
     public partial class Form1 : Form  {         public struct IconInfo        {            public bool fIcon;            public int xHotspot;            public int yHotspot;            public IntPtr hbmMask;            public IntPtr hbmColor;        }       // Tạo 1 đối tưởng kiểu Bitmap => Vì con trỏ chuột của chúng ta là 1 cái hình        Bitmap img;        public Form1()        {            InitializeComponent();        }                [DllImport("user32.dll")]        public static extern IntPtr CreateIconIndirect(ref IconInfo icon);        [DllImport("user32.dll")]        [return: MarshalAs(UnmanagedType.Bool)]        public static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo);        //        public static Cursor CreateCursor(Bitmap bmp, int xHotSpot, int yHotSpot)        {            IntPtr ptr = bmp.GetHicon();            IconInfo tmp = new IconInfo();            GetIconInfo(ptr, ref tmp);            tmp.xHotspot = xHotSpot;            tmp.yHotspot = yHotSpot;            tmp.fIcon = false;            ptr = CreateIconIndirect(ref tmp);            return new Cursor(ptr);        }                // Bắt sự kiện MouseDown của Form => Khi ta click chuột xuống là con trỏ chuột sẽ thay đổi        private void Form1_MouseDown(object sender, MouseEventArgs e)        {            this.img = new Bitmap("Images/cursor_hand.png");            // Do hàm tạo con trỏ chuột là 1 hàm kiểu static nên ta dùng Form 1 gọi trực tiếp nó.            this.Cursor = Form1.CreateCursor(img, 3, 3);            //this.Cursor = CreateCursor(img, 3, 3);        }        // Khi thả chuột lên thì con trỏ chuột trở lại từ đầu.        private void Form1_MouseUp(object sender, MouseEventArgs e)        {            Cursor cur = Cursors.Arrow;            this.Cursor = cur;        }    }}
    Di chuyển form với con trỏ chuột
    Những sự kiện liên quan: MouseDown, MouseUp, MouseMove

    Đầu tiên ta tạo 2 biến

    Mã:
            bool ismousedown = false; // Kiểm tra xem con trỏ chuột đã mousedown chưa        Point mousedownPosition = new Point();
    Nếu ismousedown = true thì con trỏ chuột đã click xuống cái Form => Sẽ nắm được cái Form di chuyển qua lại.

    MouseDown

    Mã:
    private void Form1_MouseDown(object sender, MouseEventArgs e){            ismousedown = true;            mousedownPosition.X = e.X;            mousedownPosition.Y = e.Y;            //            this.img = new Bitmap("Images/cursor_hand.png");            this.Cursor = Form1.CreateCursor(img, 3, 3);}
    MouseUp

    Mã:
    private void Form1_MouseUp(object sender, MouseEventArgs e){            ismousedown = false;            Cursor cur = Cursors.Arrow;            this.Cursor = cur;}
    MouseMove

    Mã:
    private void Form1_MouseMove(object sender, MouseEventArgs e){            if (ismousedown == true)            {                Point newPoint = new Point();                newPoint.X = this.Location.X + (e.X - mousedownPosition.X);                newPoint.Y = this.Location.Y + (e.Y - mousedownPosition.Y);                this.Location = newPoint;            }}
    Lưu ý: Cái hình ảnh thì các cậu bỏ vào trong thư mục Debug
    Có thể tìm các Icon mấy con trỏ chuột ở đây: http://www.iconfinder.com/

    Chúc thành công !!!

    Hay thì thanks giùm mình!!!

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    sao không thấy có hiệu ứng vậy nhỉ nndung179

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi qhhqnavy
    sao không thấy có hiệu ứng vậy nhỉ nndung179
    Hiệu ứng thay đổi con trỏ chuột khi click vào cái Form. Khi ko click nữa thì con trỏ chuột trở lại ban đầu.

    Nắm kéo cái Form tới 1 vị trí bất kì. Cái Form sẽ di chuyển đến nơi mà ta muốn.

    Cậu có thể download cai demo để hiểu rõ hơn.

    Chúc thành công !!!

  4. #4
    thế bây h em muốn chỉ di chuyển form khi rê chuột trong 1 khoảng nhất định thì làm ntn?

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •