关于控件间消息的传递问题

wyarrant 2004-12-17 04:37:11
有两个控件,控件1覆盖另一个控件2,控件2是控件1 的容器

怎么做才能实现如下效果:
对控件1的操作(MouseMove等)的消息可以直接传递到控件2,从而触发控件2的相关事件。

说明:
不在控件1的MouseMove事件中关联控件2的事件
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyarrant 2004-12-26
  • 打赏
  • 举报
回复
反正已经解决了,结了
wyarrant 2004-12-26
  • 打赏
  • 举报
回复
to:hatita(悠远的风景)
这种方法当然可以达到效果,但是我不希望这么处理
所以我在最后特别注明
"
说明:
不在控件1的MouseMove事件中关联控件2的事件
"
哈哈007哈 2004-12-23
  • 打赏
  • 举报
回复
不明白
DotNetFreak 2004-12-23
  • 打赏
  • 举报
回复
我能想到两个解决方法
1. override 控件一的 WndProc,在里面给控件二发 WM_xxxxx

2. 把控件1,2包起来,做成自定义控件(继承控件二)
UserControl1 : 控件2
这样就可以在处理控件一事件的时候call 控件二的 OnXXXXX method 了(他们是protected 的)
hatita 2004-12-23
  • 打赏
  • 举报
回复
to wyarrant(ostrich)
还是不明白你的意思。

“在控件一的事件中直接调用控件2的事件处理函数也可以达到效果”


button1.MouseMove += new MouseEventHandler(this.Move);
button2.MouseMove += new MouseEventHandler(this.Move);

2个控件最后都调用Move这个方法,不是你所要的?
wyarrant 2004-12-22
  • 打赏
  • 举报
回复
最简单的方法解决了
control1.enable = false;
wyarrant 2004-12-18
  • 打赏
  • 举报
回复
to hatita(悠远的风景)
你那个是定义鼠标处理事件而已

我在说明中说的关联的意思是
在控件一的事件中直接调用控件2的事件处理函数也可以达到效果
private void Control1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
Control2_MouseMove(sender, e);
}
hatita 2004-12-17
  • 打赏
  • 举报
回复
什么是 “不在控件1的MouseMove事件中关联控件2的事件”?

button1.MouseMove += new MouseEventHandler(this.Move);
button2.MouseMove += new MouseEventHandler(this.Move);

这样吗?
fellowcheng 2004-12-17
  • 打赏
  • 举报
回复
UP

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧