我创建了一个 800x600 像素的不可调整大小的 Windows 窗体。我的问题是,当在高度小于我的表单高度的屏幕分辨率上查看表单时,我的对话框的底部被 Windows 任务栏覆盖。
我尝试通过允许用户使用以下方法从任何地方拖动表单来解决这个问题:
[DllImport("user32.dll")]
static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, UIntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
static extern bool ReleaseCapture(IntPtr hwnd);
const uint WM_SYSCOMMAND = 0x112;
const uint MOUSE_MOVE = 0xF012;
public void Drag()
{
DefWindowProc(this.Handle, WM_SYSCOMMAND, (UIntPtr)MOUSE_MOVE, IntPtr.Zero);
}
private void OnMainPanelMouseDown(object sender, MouseEventArgs e)
{
Control ctrl = sender as Control;
ReleaseCapture(ctrl.Handle);
this.Drag(); // put the form into drag mode.
}
我可以将我的表单拖到任何地方,但我现在遇到了问题。Windows 不允许将任何窗口拖动到屏幕顶部边缘之外。它将窗口捕捉回屏幕顶部。
我正在寻找一种禁用此 Windows 行为的方法,至少对于我的表单而言。