请问如何在点击子窗体标题栏的时候触发相应的事件?(比如说弹出messagebox)? 如题。我用了mousedown、mouseclick等事件都没用,求教高手。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以对子窗体使用NativeWindow子类化,然后处理WndProc方法来处理鼠标按在标题栏的消息。 hbxtlhx谢谢,你能不能说的具体点(比如给点代码),我刚学这个没多长时间,不太明白。 是什么类型的父子窗体呢?MDI类型的吗? 父窗体(form1)是mid窗体,有两个子窗体(form2,form3). 父窗体是MDI窗体,刚才打错了,写成了mid了 你可以在每一个子窗体(或所有子窗体的基窗体中)放如下的代码来处理这个消息:protected override void WndProc(ref Message m){ if (m.Msg == 0xa1 && (int)m.WParam == 0x2) { MessageBox.Show("click"); } base.WndProc(ref m);}如果子窗体不能被改写而只能在主窗体里处理,这个时候才需要对其子类化。或使用MessageFilter来处理消息。 在主窗体里处理的时候可以参考如下的代码://在主窗口里定义如下的类:class SubWindow : NativeWindow{ protected override void WndProc(ref Message m) { if (m.Msg == 0xa1 && (int)m.WParam == 0x2) { MessageBox.Show("click"); } base.WndProc(ref m); }}//在建立子窗体的时候参考如下的代码:FormSub f = new FormSub();f.MdiParent = this;SubWindow nw = new SubWindow();nw.AssignHandle(f.Handle);this.m_native.Add(nw); 我刚才试了下,在主窗体可以运行,但是在子窗体就回出现异常(系统提示确保没有无限循环或递归).估计要用子类化了,刚才查询了msdn,还不太懂hbxtlhx,你能在帮帮我吗?谢谢了 this.m_native.Add(nw);中间怎么有"_",我在程序里找了半天也没找到 在主窗体里声明就是了:private ArrayList m_native; C#编程遇到受保护无法访问 WPF滚动条窗体弹跳的问题 如何用C#操作WORD中文本框 获取剪贴板中HTML格式的数据 当前文件夹中存在许多文件,怎没得出文件中存在aa.exe? C#中怎么把oralce数据库中的数据导入*.dbf文件中 如何只生成单一实例 I want to save winword.document.content into access database?who could give me code? 找。。FJGoodGood(_FJ_强中强) GrideView里面怎么控制录入类型 一个简单的C#语法问题 C#调用API GetThreadTimes方法 不成功
{
if (m.Msg == 0xa1 && (int)m.WParam == 0x2)
{
MessageBox.Show("click");
}
base.WndProc(ref m);
}如果子窗体不能被改写而只能在主窗体里处理,这个时候才需要对其子类化。或使用MessageFilter来处理消息。
class SubWindow : NativeWindow
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0xa1 && (int)m.WParam == 0x2)
{
MessageBox.Show("click");
}
base.WndProc(ref m);
}
}
//在建立子窗体的时候参考如下的代码:
FormSub f = new FormSub();
f.MdiParent = this;SubWindow nw = new SubWindow();
nw.AssignHandle(f.Handle);
this.m_native.Add(nw);
hbxtlhx,你能在帮帮我吗?谢谢了
private ArrayList m_native;