WPF 中非模式对话框的实现

用VC++ 要实现非模式对话框的,可以用下面的代码:

 if(!IsWindow(m_myDlg.m_hWnd))
 {
  m_myDlg.Create(IDD_MY_DLG,this);
 }

但是WPF中的窗口没有句柄,实现非模式对话框就比较麻烦,特别是在主窗口中需要多次显示某个非模式对话框时。

查了一些资料,可以在执行非模式对话框的Closing事件的时候做些手脚:在主窗口类中定义非模式对话框(ShowImage)

        ShowImage showImage = new ShowImage();
        #region 显示/关闭 图像处理的窗口
        delegate void ShowImgWinHide();
        private ShowImgWinHide showImgWillHide;
        private void HideShowImgWin()
        {
            this.showImage.Hide();
        }
        #endregion

 

在主窗口类的构造函数里:

this.showImgWillHide = new ShowImgWinHide(this.HideShowImgWin);

this.showImage.Closing += new CancelEventHandler(ShowImg_Closing);

 

 void ShowImg_Closing(object sender, CancelEventArgs e)
 {
       e.Cancel = true;
       Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, this.showImgWillHide);
 }

在主窗口类的显示非模式的事件里:

showImage.Show();

这样在主窗口就可以反复调用显示非模式了。

 

 

转载于:https://www.cnblogs.com/FlyingRoc/archive/2009/02/19/1394199.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值