现有两窗体及我想要达到的目的:
A为被操作的窗体,有一TextBox控件,及TextBox上有个Leave事件
B为操作窗体,通过A的句柄设置A的TextBox的值后触发它的Leave事件第一步:设置TextBox值, 完成
第二步:给TextBox发送失去焦点的事件,完成
第三步:通知主窗体,TextBox的事件已经更新, 问题就在这里怎么用SendMessage向主窗体通告消息呢?其参数是怎么构造的?
或者通过其它的什么API?诸位路过的兄弟, 真心帮忙的请认真分析并回答问题, 自有分送上, 请勿转帖大篇幅的文章
A为被操作的窗体,有一TextBox控件,及TextBox上有个Leave事件
B为操作窗体,通过A的句柄设置A的TextBox的值后触发它的Leave事件第一步:设置TextBox值, 完成
第二步:给TextBox发送失去焦点的事件,完成
第三步:通知主窗体,TextBox的事件已经更新, 问题就在这里怎么用SendMessage向主窗体通告消息呢?其参数是怎么构造的?
或者通过其它的什么API?诸位路过的兄弟, 真心帮忙的请认真分析并回答问题, 自有分送上, 请勿转帖大篇幅的文章
textBox.Leave += new System.EventHandler(New_textBox1_Leave);
如下: SendMessage(hwnd,msg,wparam,lparam)
/*参数说明一下:
hwnd:是窗体句柄,你可以通过你的窗体类里:this.Handle获得
msg:自定义消息,为避免和windows消息重复,你可以用:0x400+n (n是你的第几条消息)
wparam和lparam是附带的参数,可以是int,IntPtr。
*/
//对于接收消息的窗体可以重载WndProc
protected override WndProc(msg)//类型忘记了,你直接override WinProc这里是自动生成的
{
if(msg.msg == 0x401/*你的消息的值*/)
{
//操作
}
else
base.WndProc(ref msg);
}
=================更正为: //对于接收消息的窗体可以重写WndProc郁闷,居然字也能打错
这是重写被操作窗体上的消息处理方法吧我的意思是要操作窗体来触发被控窗体的TextBox的Leave事件
而在被控窗体上不做特殊处理
在B窗体上加载A的事件,调用B的方法意思就是说自己写事件 和委托
http://topic.csdn.net/u/20080626/17/1742fccb-1513-4543-9f9f-045660d24666.html
{
InitializeComponent();
} private void FrmMain_Activated(object sender, EventArgs e)
{
tss3.Text = "当前部门:" + Config.CurrentcDepCode + "," + Config.CurrentcDepName;
}
Form1 form = new Form1();
form.ShowDialog();
重写的方法只是接收消息窗体
而发送消息的窗体則是使用SendMessage
这个消息就如你所说的通知主窗体事件已更新
在被控窗体上不做特殊的处理,因为被控窗体是另一个正常运行的软件
我想直接由主控窗体来通知被控窗体的事件的更新
不知明白我的意思否?大致思路是用SendMessage向被控的主窗体发送一个Notify事件
但是尝试了多次也未能成功
猜想可能是该事件的第三个和第四个参数未传递正确