问题描述:
主窗体界面下有多个功能按钮,点击功能按钮显示功能界面,主窗口隐藏,关闭功能界面后主窗口显示,这里功能界面如果是模态对话框,则很好处理,在显示功能界面前隐藏主窗口,此时显示功能界面,由于功能界面是模态框,此时主界面会阻塞,直到功能界面关闭!此时显示主窗口!如果功能界面是非模态窗体,则主窗口不会阻塞!如何解决呢?
解决方案:使用自定义消息!关闭功能界面给主窗口发送自定义消息,主窗口做显示处理即可!
第一步:定义自定义消息 public const int WM_MSG = 0x0400 + 200;
第二步:设置主界面的窗口句柄,发送消息时需要使用
第三步:在功能界面关闭时调用PostMessage函数发送消息,SendMessage也可,不过此函数会阻塞等待返回
PostMessage(MainHandle, WM_MSG, 0, 0);
第四步:在主界面处理自定义消息
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WinAPI.WM_MSG:
this.Show();
break;
}
base.WndProc(ref m);
}