WPF 如何判断窗口已经打开,并将其置为最前
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 如何判断窗口已经打开,并将其置为最前相关的知识,希望对你有一定的参考价值。
现有WPF 窗体 A 和 B,我现在想要在A 中写个方法,判断B 是否处于最前或者是否关闭,如果关闭,则重新打开B,否则将B 置为最前,请问怎么做,十分感谢 !
参考技术A 简单点就是在A里面定义个B的全局变量! 参考技术B puclic class WindowA:Windowpublic WindowA()
WndB.Closing+=(s,e)=>WndB.IsVisible=false;
...
WindowB WndB = new WindowB();
...
void button_click1(..,..)
WndB.IsVisible=true;WndB.BringToFront();
本回答被提问者和网友采纳
wpf 只让窗口保留一个,并在最前显示
就是遍历所有的,有的话就不生成了,没有的话就生成一个,还有最前是一个参数,最后就是窗口事件了。
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();
}
以上是关于WPF 如何判断窗口已经打开,并将其置为最前的主要内容,如果未能解决你的问题,请参考以下文章