Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Di chuyển form khi FormBorderStyle = None

  1. #1
    Ngày gia nhập
    01 2009
    Bài viết
    6

    Smile Di chuyển form khi FormBorderStyle = None

    Em muốn tạo form có thuộc tính formborderstyle là none nhung không thể di chuyển được .
    Các bác giúp em với.

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Ví dụ minh họa thôi ha bạn.
    Bắt sự kiện Form1_MouseDown, Form1_MouseMove, Form1_MouseUp như code sau:

    Visual C# Code:
    1.  bool kt = false;
    2.         int Y, X;
    3.         private void Form1_MouseDown(object sender, MouseEventArgs e)
    4.         {
    5.             kt = true;
    6.             Y = e.Y;
    7.             X = e.X;
    8.         }
    9.  
    10.         private void Form1_MouseMove(object sender, MouseEventArgs e)
    11.         {
    12.             if (kt)
    13.             {
    14.                 this.Top += e.Y - Y;
    15.                 this.Left += e.X - X;
    16.             }
    17.         }
    18.  
    19.         private void Form1_MouseUp(object sender, MouseEventArgs e)
    20.         {
    21.             kt = false;
    22.         }

    Bạn có thể di chuyển form tùy ý, khi bạn nhấp chuột bất kỳ vị trí nào và di chuyển form sẽ di chuyển theo.
    Đã test kỹ trước khi gửi cho bạn code trên. Chúc bạn may mắn khi xử lý với trường hợp trên (còn cách nào ngắn hơn hay không thì mình chịu, hiii).
    Không biết ghi gì luôn ...

  3. #3
    Ngày gia nhập
    01 2009
    Bài viết
    201

    Code:
    private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                kt = true;
                Y = e.Y;
                X = e.X;
            }
    
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                if (kt)
                {
                    this.Top += e.Y - Y;
                    this.Left += e.X - X;
                }
            }
    
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                kt = false;
            }
    cho mình hỏi là 3 cái hàm này có thể dùng kéo thả để tạo ra tên của nó không ( chỉ cái tên thôi,còn sử lý thì mình tự đánh code vào )

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi AdminPro Xem bài viết

    cho mình hỏi là 3 cái hàm này có thể dùng kéo thả để tạo ra tên của nó không ( chỉ cái tên thôi,còn sử lý thì mình tự đánh code vào )
    Ý bạn là sao. Cái này là sự kiện của form mà, chỉ việc vào thuộc tính của form, rùi double click bên sự kiện một cái là nó tự sinh ra hàm đó thôi, chỉ việc đưa vào vài dòng code thôi là xong mà.
    Không biết ghi gì luôn ...

  5. #5
    Ngày gia nhập
    01 2009
    Bài viết
    6

    Cám ơn bạn nhiều nhé!.

  6. #6
    Ngày gia nhập
    11 2008
    Bài viết
    77

    Mặc định Di chuyển form khi FormBorderStyle = None

    bạn FH cho hỏi :
    Code:
    this.Top += e.Y - Y;
                    this.Left += e.X - X;
    nghĩa là gì vậy

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi trung Xem bài viết
    bạn FH cho hỏi :
    Code:
    this.Top += e.Y - Y;
                    this.Left += e.X - X;
    nghĩa là gì vậy
    cái này chỉ là di chuyển form thôi bạn àh, Left và Top của form thôi mà (rõ hơn tí, Left: là vị trí so với bên phải, Top: là vị trí so với trên). Cái này là cơ bản thôi bạn àh, thử xem lại tí đi bạn!
    Không biết ghi gì luôn ...

  8. #8
    Ngày gia nhập
    11 2008
    Bài viết
    77

    mình thấy có
    Code:
    this.Right 
    this.Bottom
    nhưng 2 cái này ko xài dc ???

    Code:
    this.Top += e.Y - Y;
    this.Left += e.X - X;
    tại sao Top,Left += vị trí hiện tại - vị trí (mouse down) , nếu -= thì sao hoặc = thì sao ?
    bạn giải thích rõ hơn dc ko ?
    thanks

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi trung Xem bài viết
    Code:
    this.Top += e.Y - Y;
    this.Left += e.X - X;
    tại sao Top,Left += vị trí hiện tại - vị trí (mouse down) , nếu -= thì sao hoặc = thì sao ?
    bạn giải thích rõ hơn dc ko ?
    thanks
    Vi dụ: khi bạn nhấp chuột (mouse down), sẽ lấy vị trí chuột nhấp (X,Y, giả sử là 1,1).
    - Nếu bạn di chuyển chuột về vị trí bên trái và bên trên (giả sử là 0,0) thì form đã di chuyển theo đúng như vậy (tức 0-1=-1; 0-1=-1, hai con số -1 chứng tỏ điều đó)
    - Giả sử bạn di chuyển đến vị trí 2,2. 2-1; 2-1. Tức form di chuyển 1,1. (thứ tự Left trước, Top sau)
    Từ đó ta cộng tiếp vào vị trí hiện tại, sẽ đưa form di chuyển theo. (cho dù là di chuyển ngược về bên trái hay di chuyển lên trên, phép trừ ở đây là để giải quyết vấn đề số âm nếu di chuyển thế).


    *Nếu sử dụng Left,Top-=, thì thế này:
    Visual C# Code:
    1. if (kt)
    2.             {
    3.                 this.Top -= -e.Y + Y;
    4.                 this.Left -= -e.X + X;
    5.             }

    *Nếu sử dụng Left,Top= thì lại thế này
    Visual C# Code:
    1. bool kt = false;
    2.         int Y, X,L,T;        
    3.         private void Form1_MouseDown(object sender, MouseEventArgs e)
    4.         {
    5.             kt = true;
    6.             L = this.Left;
    7.             T = this.Top;
    8.             Y = e.Y;
    9.             X = e.X;
    10.         }
    11.  
    12.         private void Form1_MouseMove(object sender, MouseEventArgs e)
    13.         {
    14.             if (kt)
    15.             {
    16.                 this.Top =T+(e.Y - Y);
    17.                 this.Left =L+ (e.X - X);
    18.                 T = this.Top;
    19.                 L = this.Left;
    20.  
    21.             }
    22.         }
    23.  
    24.         private void Form1_MouseUp(object sender, MouseEventArgs e)
    25.         {
    26.             kt = false;
    27.         }

    Chú ý, tất cả các code này đã test rất kỹ, mong bạn hiểu sớm vấn đề, không biết phải giải thích kỹ hơn nữa hay không?
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 09-03-2009 lúc 08:45 AM.
    Không biết ghi gì luôn ...

  10. #10
    Ngày gia nhập
    11 2008
    Bài viết
    77

    ok thanks FH

Các đề tài tương tự

  1. ADO.NET chuyển mã từ form này sang form khác ?
    Gửi bởi hungzany trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 19-04-2013, 09:32 AM
  2. Cách Show thông tin khi nhập textbox từ form 1 chuyển sang form 2 áp dụng Delegate
    Gửi bởi loinguyen trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 24-08-2012, 01:42 AM
  3. Cách bo tròn 4 góc form có formborderstyle = none mà không bị răng cưa không chỉ mình với?
    Gửi bởi killdog9x trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 30-05-2012, 11:20 AM
  4. Lấy Dữ Liệu Ở 1 Form Chuyển Sang Form Khác?
    Gửi bởi gacongnghiep_cs trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 20-05-2011, 04:09 PM
  5. Chuyển dữ liệu từ Form 1 sang form 2 ?
    Gửi bởi nguyenletri trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 19-10-2010, 11:33 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn