如何在隐藏标准标题栏时移动窗口
本文关键字:移动 窗口 标题栏 标准 隐藏 | 更新日期: 2023-09-27 18:35:17
在我的 .net winform 应用程序的标题栏中,我放置了一个 Panel 控件,其中包含许多其他控件。因此,当我单击面板时,我没有得到上下文菜单或拖动功能。但是当我在标题栏中单击面板外部时,会出现相同的情况。
PS - 显然对于用户来说,应用程序顶部的整个栏被称为"标题栏",他们希望标题栏上的任何地方都有拖动和上下文菜单(对他们来说,还包括面板。
那么有没有办法实现这一目标。我希望在右键单击面板或面板中的任何控件时显示上下文菜单。当我尝试单击并拖动面板或面板中的任何控件时,我还想拖动整个应用程序窗口。
感谢任何形式的帮助。谢谢!
您必须像"普通"标题栏一样将消息隧道传输到WndProc
。
声明这一点:
private const int WM_SYSCOMMAND = 0x112;
private const int SC_MOUSEMOVE = 0xf012;
private const int SC_MOUSEMENU = 0xf090;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg,
IntPtr wParam, IntPtr lParam);
然后在Panel
MouseDown
处理程序上对左键单击执行以下操作:
SendMessage(Handle, WM_SYSCOMMAND, new IntPtr(SC_MOUSEMOVE), IntPtr.Zero);
这是右键单击:
SendMessage(Handle, WM_SYSCOMMAND, new IntPtr(SC_MOUSEMENU), IntPtr.Zero);