c# – 如何将消息从子用户控件传递给父用户

这是一个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);
}

希望这可以帮助.

上一篇:kali linux 熟悉环境


下一篇:php – 从表中查找最新消息,由用户在mysql中分组