加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 19:34:04 所属栏目:百科 来源:网络整理
导读:这是一个 Windows Forms / .Net 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);
}

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读