У меня есть подвижная форма без полей (тащится, щелкая и удерживая кнопку мыши). Перетаскивание работает только тогда, когда я нажимаю на пустые места формы, например поле / область заполнения. Как отобразить элемент управления (скажем, метку), чтобы он не захватывал события мыши, а вместо этого передавал его базовому элементу формы? Другими словами, я хочу нажать на этот элемент метки и перетащить форму.
Самая близкая вещь, о которой я могу думать, - pointer-events: none
в CSS
.
Вот код powershell, который я использую, чтобы сделать мою форму подвижной:
function makeFormDraggable {
param($form)
Add-Type '
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
public class User32{
//const and dll functions for moving form
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
}
'
$onMouseDown = [System.Windows.Forms.MouseEventHandler] {
#Event Argument: $_ = [System.Windows.Forms.MouseEventArgs]
[user32]::ReleaseCapture()
[user32]::SendMessage($form.Handle, [user32]::WM_NCLBUTTONDOWN, [user32]::HT_CAPTION, 0);
}
$form.Add_MouseDown($onMouseDown)
}