wpf 只让窗口保留一个,并在最前显示

本文介绍了如何在WPF中确保应用程序仅保留一个窗口,并使其始终位于最前面。通过遍历窗口实例和设置最前属性,以及使用全局窗口对象进行管理,实现该功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就是遍历所有的,有的话就不生成了,没有的话就生成一个,还有最前是一个参数,最后就是窗口事件了。


          //如果容器里没有预览控件,就加入控件
            ChangeDistingWordOfSelected mw = null;
            foreach (Window win in App.Current.Windows)
            {
                if (win is ChangeDistingWordOfSelected)
                {
                    mw = win as ChangeDistingWordOfSelected;
                }
            }
            if (mw == null)
            {
                mw = new ChangeDistingWordOfSelected();
                mw.WindowStartupLocation = WindowStartupLocation.Manual;
               // mw.Left = 1025;//窗口生成的位置
                mw.Left = Mouse.GetPosition(GlobalHelper._mainWindow).X;
                mw.Top = Mouse.GetPosition(this).Y ;
                mw.Show();
            }
            else
            {
                mw.Visibility = System.Windows.Visibility.Visible;
                mw.Topmost = true;
            }

            mw.btn_ok.Click += delegate//确定替换字
            {
                ListResult[CurrentLineIndex].LineTxtInfo[CurrentTxtIndex].TxtResult = mw.ChangedWord.Text;//更换选中的字;

                ObservableCollection<string> strNewLineTxt = new ObservableCollection<string>();
                strNewLineTxt.Clear();
                for (int l = 0; l < ListResult[CurrentLineIndex].LineTxtInfo.Count; l++)
                {
                    strNewLineTxt.Add(ListResult[CurrentLineIndex].LineTxtInfo[l].TxtResult);
                }
                this.ListListBox[CurrentLineIndex].ItemsSource = strNewLineTxt;
                mw.Close();
            };

2,也可以新那家一个全局的窗口对象,每次检查当前对象是否为空

 if (drawingsoftware_wnd == null)
            {
                double height = this.Height;
                double width = this.Width;
                drawingsoftware_wnd = new DrawingSoftware_Popup(this, height, width);
                drawingsoftware_wnd.Owner = this;
            }

            if (!drawingsoftware_wnd.IsVisible)
            {
                drawingsoftware_wnd.Show();
                this.Hide();
            }
            else
            {
                drawingsoftware_wnd.Hide();
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值