[英]ReSize SizeChanged event not fired when clicking on an application running in the taskbar
[英]SizeChanged event being fired recursively
我的一个窗口中有一个SizeChanged事件。 用户控件之一的Width表现有趣,所以我决定在SizeChanged事件中静态设置窗口的宽度。 问题是,当我在大小更改事件中设置窗口的大小时,它会触发另一个大小更改事件! 我希望用户能够调整窗口大小,然后仅使事件触发一次。 我努力了 :
e.Handled = true;
以及在窗口构造函数中添加事件处理程序,并在大小更改的事件中将其删除。 (这使得它只能触发一次,而在窗口的生命周期中将永远不会触发)。 有任何想法吗?
您应该使用私人布尔值,并在更改大小后更改其值
bool _sizeChanged=false;
void handleResize(Object sender, EventArgs e)
{
if (_sizeChanged==false)
{
// do stuff
}
_sizeChanged=true;
}
但这还不够 ,因为您应该在其他地方再次更改其值。 如果您不更改其值(例如,在其他地方更改为false),它将永远不会再通过'if'条件。 所以问题是,应该在哪里更改其值。
我认为您可以更改MouseButtonUp
事件的值,因为调整大小是使用鼠标完成的。
您可以使用boolean
来确定是否处理事件。
private bool m_handleResizeEvent;
private void HandleResize(object sender, EventArgs e)
{
if (m_handleResizeEvent)
{
m_handleResizeEvent = false;
// perform your resize here
m_handleResizeEvent = true;
}
}
原来是导致我的Window的XAML中的SizeToContent =“ Width”属性导致多次调用SizeChanged。 删除此属性可解决我的问题,并允许我调整窗口大小而不会多次触发该事件。 感谢其他人的回答和输入!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.