Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
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ố 14 kết quả

Đề tài: khóa form C#, không cho di chuyển như thế nào

  1. #1
    Ngày gia nhập
    07 2010
    Bài viết
    115

    Mặc định khóa form C#, không cho di chuyển như thế nào

    mình có 1 form, khi form này hiện lên thì người dùng không thể di chuyển form dc.
    form mình vẫn có titlebar nha !
    mình bắt sự kiện move nhưng chuối quá
    các bạn cho mình ý kiến hen ! thanks trước !
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi lonelyeveningstar : 06-11-2011 lúc 01:18 PM.

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

    tui tìm được một đoạn code như thế này:
    copy vào form.cs là được

    Code:
    protected override void WndProc(ref Message m)
            {
                const int WM_NCLBUTTONDOWN = 161;
                const int WM_SYSCOMMAND = 274;
                const int HTCAPTION = 2;
                const int SC_MOVE = 61456;
                if ((m.Msg == WM_SYSCOMMAND) && (m.WParam.ToInt32() == SC_MOVE))
                {
                    return;
                }
                if ((m.Msg == WM_NCLBUTTONDOWN) && (m.WParam.ToInt32() == HTCAPTION))
                {
                    return;
                }
                base.WndProc(ref m);
            }

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

    Mình có chiêu này, cậu làm thử nhé:


    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace DoNotMoveForm
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            System.Drawing.Point initialLocation;
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.initialLocation = this.Location;
            }
    
            private void Form1_Move(object sender, EventArgs e)
            {
                this.Location = this.initialLocation;
            }  
        }
    }

  4. #4
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Trích dẫn Nguyên bản được gửi bởi lancejade Xem bài viết
    tui tìm được một đoạn code như thế này:
    copy vào form.cs là được

    Code:
    protected override void WndProc(ref Message m)
            {
                const int WM_NCLBUTTONDOWN = 161;
                const int WM_SYSCOMMAND = 274;
                const int HTCAPTION = 2;
                const int SC_MOVE = 61456;
                if ((m.Msg == WM_SYSCOMMAND) && (m.WParam.ToInt32() == SC_MOVE))
                {
                    return;
                }
                if ((m.Msg == WM_NCLBUTTONDOWN) && (m.WParam.ToInt32() == HTCAPTION))
                {
                    return;
                }
                base.WndProc(ref m);
            }
    Cái này hay nhỉ.

  5. #5
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Hay thật. thank lancejade. Nhưng hơi lạ.hehe. có nhiều con số ko biết ý nghĩa gì?
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  6. #6
    Ngày gia nhập
    07 2010
    Bài viết
    115

    Mặc định khóa form C#, không cho di chuyển như thế nào

    Thanks lancejade
    đúng cái mình tìm, mà hơi lạ thật

  7. #7
    Ngày gia nhập
    10 2010
    Nơi ở
    Sài Gòn
    Bài viết
    3

    đó là những trọng số xác định, do kinh nghiệm lập trình mà tự cho là số bao nhiêu thôi, phải ko tác giả ??

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Không phải thế đâu. có ý nghĩa cả, không tự do được. tuy nhiên, không có chú thích nên muốn biết thì phải tìm hiểu về nó.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  9. #9
    Ngày gia nhập
    11 2010
    Bài viết
    7

    Mặc định Không hiểu đối số tham chiếu kiểu message là như thế nào?

    Trích dẫn Nguyên bản được gửi bởi lancejade Xem bài viết
    tui tìm được một đoạn code như thế này:
    copy vào form.cs là được

    Code:
    protected override void WndProc(ref Message m)
            {
                const int WM_NCLBUTTONDOWN = 161;
                const int WM_SYSCOMMAND = 274;
                const int HTCAPTION = 2;
                const int SC_MOVE = 61456;
                if ((m.Msg == WM_SYSCOMMAND) && (m.WParam.ToInt32() == SC_MOVE))
                {
                    return;
                }
                if ((m.Msg == WM_NCLBUTTONDOWN) && (m.WParam.ToInt32() == HTCAPTION))
                {
                    return;
                }
                base.WndProc(ref m);
            }
    Mình rất gà trong code nên mình muốn hỏi bạn là việc tham chiếu 1 giá trị message trong hàm trên là như thế nào? Theo như yêu cầu của topic là khóa không cho người dùng có thể di chuyển form thì giá trị tham chiếu đến message nó có ý nghĩa như thế nào? Và việc sử dụng override trên có tác dụng gì không khi ở một project mới?
    Thêm nữa, bạn có thể giải thích rõ hơn về việc sử dụng nó như thế nào không?
    Đã được chỉnh sửa lần cuối bởi nguyenhaidangduy : 25-11-2011 lúc 02:22 AM.

  10. #10
    Ngày gia nhập
    02 2009
    Bài viết
    8

    Nếu học MFC thì mới biết mấy cái số này. Nó là mấy hằng số định nghĩa trước của windows, nên nếu bạn gán các biến trên bằng số khác là không chạy như mình muốn đâu. OS khởi các message cho app qua hàm này.

    Vào đây xem 1 số windows mesage (nhấn ctrl+F để find cho nhanh) :
    http://www.autohotkey.com/docs/misc/SendMessageList.htm
    WM_NCLBUTTONDOWN = 0xA1 là windows message non client left button down với giá trị hecxa
    HTCAPTION là hit test caption

    Override là liên quan đến lập trình hướng đối tượng. Khi bạn override thì base class là class Form sẽ gọi hàm mà bạn override (Winproc trong trường hợp này). Vì trong base class nó là virtual nên trong đây mình override --> tìm sách OOP mà xem.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi bongtoi : 25-11-2011 lúc 11:08 PM.

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

  1. Algorithm Cho PictureBox chuyển động trong Form như thế nào ?
    Gửi bởi kenz_kennedy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 15-10-2011, 10:46 AM
  2. ADO.NET Làm thế nào để không thể di chuyển form khi vẫn có Tittle ?
    Gửi bởi caohuynhbao trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 23-09-2011, 07:42 PM
  3. Algorithm Viết code thời khóa biểu viết trên Window Form C# như thế nào?
    Gửi bởi hocphp_1998 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 12-04-2011, 11:10 PM
  4. DateTimePicker chuyển thành dạng thời gian trong C# Window form như thế nào?
    Gửi bởi bimbim1989 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 12-08-2010, 06:34 AM
  5. Chuyển dữ liệu giữa 2 form trên C# như thế nào?
    Gửi bởi manhluc88 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 24-05-2009, 12:40 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