Предотвратить перетаскивание дочерней формы с помощью мыши - PullRequest
0 голосов
/ 26 октября 2019

У меня есть метод WndProc, который предотвращает перетаскивание основной формы. Я хотел бы предотвратить перетаскивание дочерней формы, созданной в конструкторе Form_Main:

Form form1 = new Form();

Метод предотвращения перетаскивания основной формы:

/// <summary>
    /// Prevents Form_Main and any of the controls from being dragged by means of the mouse.
    /// </summary>
    /// <param name="messsage"></param>
    protected override void WndProc(ref Message message)
    {
        int WM_NCLBUTTONDOWN = 0xA1;
        int WM_SYSCOMMAND = 0x112;
        int HTCAPTION = 0x02;
        int SC_MOVE = 0xF010;

        if (message.Msg == WM_SYSCOMMAND && message.WParam.ToInt32() == SC_MOVE)
        {
            return;
        }

        if (message.Msg == WM_NCLBUTTONDOWN && message.WParam.ToInt32() == HTCAPTION)
        {
            return;
        }

        base.WndProc(ref message);
    }

Пожалуйста, помогите. Заранее благодарю.

1 Ответ

1 голос
/ 26 октября 2019

Вот способ (в моей идее), и я не уверен, что это лучший способ:

Создайте класс с именем LockedForm:

 public class LockedForm : Form
 {
        protected override void WndProc(ref Message message)
        {
            int WM_NCLBUTTONDOWN = 0xA1;
            int WM_SYSCOMMAND = 0x112;
            int HTCAPTION = 0x02;
            int SC_MOVE = 0xF010;

            if (message.Msg == WM_SYSCOMMAND && message.WParam.ToInt32() == SC_MOVE)
            {
                return;
            }

            if (message.Msg == WM_NCLBUTTONDOWN && message.WParam.ToInt32() == HTCAPTION)
            {
                return;
            }

            base.WndProc(ref message);
        }
 }

И унаследуйте ваши формыиз этого класса, просто так:

public partial class Frm_Main : LockedForm
{
        public Frm_Main()
        {
            InitializeComponent();
        }       
} 

И

Form form1 = new LockedForm();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...