这是一个Windows Forms / .Net C#问题.
我有一个无边框窗口,其透明度键和背景色使其完全透明.窗口内有几个用户控件.
我希望能够移动窗口.我知道如何在父窗口上执行此操作,但我的问题是子控件是唯一可见的东西,因此唯一可点击的东西.
问题是:如何将某些消息传递给Parent,以便当鼠标右键按下并且鼠标移动到任何一个子控件上时,Parent可以移动?
或者你可以建议另一种方式?
谢谢您的帮助.
标记
解决方法:
即使没有使用System.Windows.Forms.Message类的SendMessage,您也可以实现目标.如果您已完成拖动,我猜您熟悉WM_NCLBUTTONDOWN消息.从控件的MouseDown事件发送给您父.
以下是移动表单单击控件label1的示例.请注意第一行,其中sender用于从单击的控件中释放捕获.这样,您可以将此处理程序设置为用于移动表单的所有控件.
这是移动表单的完整代码.不需要任何其他东西.
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
private void label1_MouseDown(object sender, MouseEventArgs e)
{
(sender as Control).Capture = false;
Message msg = Message.Create(Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
base.WndProc(ref msg);
}
希望这可以帮助.