嗨我有一个代码可以在窗口(WPF窗口)激活时编写,就像点击窗口或使用alt / tab一样。窗口是主窗体的子窗口(Windows应用程序)。我使用ToolWindow作为windowstyle。
它有一个xamdatagrid,必须在激活时更新
问题是它多次发生。它应该被解雇一次。我不希望我的代码多次运行
如何使其发挥作用。请帮忙
答案 0 :(得分:0)
来自MSDN上的Window.Activated
Event页:
当窗口成为前景窗口时发生。
Window.Activated
事件假设被多次调用,所以也许它不是你要处理的最佳事件。或者,您可以添加bool isFirstTime
变量并使用它来限制您的代码仅被调用一次。举个例子:
private bool isFirstTime = true;
...
private void WindowActivated(object sender, EventArgs e)
{
if (isFirstTime)
{
isFirstTime = false;
// do something here just once
}
}
但是,(来自链接页面)......
在以下情况下激活窗口(成为前景窗口):
•首先打开窗口 •用户通过鼠标选择,按ALT + TAB或从任务管理器切换到窗口 •用户单击窗口的任务栏按钮。
......你可能会发现这对你不起作用。
答案 1 :(得分:-1)
我完成了。 我使用下面的代码
private void OnAttributeHistoryWindowActivated(object sender, EventArgs e)
{
var win = ((RoutedEventArgs)(e)).Source as AttributeHistoryWindow;
//My Code
}
第一行代码是重新启动Activated事件。它永远不会进入我的代码enter code here
现在我使用下面的代码,它可以工作。
private void OnAttributeHistoryWindowActivated(object sender, EventArgs e)
{
var win = sender as AttributeHistoryWindow;
//My Code
}
现在它会发射一次。