我的一个窗口中有一个SizeChanged事件。其中一个用户控件Width表现得很有趣,所以我决定在SizeChanged事件中静态设置窗口的宽度。问题是,当我在尺寸改变事件中设置窗口的大小时,它会触发另一个尺寸改变的事件!我希望用户能够调整窗口大小,然后只触发一次事件。我试过了:
e.Handled = true;
除了在窗口构造函数中添加事件处理程序,并在size changed事件中删除它。 (这使得它只能射击一次,并且不会在窗口的生命周期中再次射击)。有任何想法吗?
答案 0 :(得分:1)
你应该使用私有bool并在大小改变时更改其值
bool _sizeChanged=false;
void handleResize(Object sender, EventArgs e)
{
if (_sizeChanged==false)
{
// do stuff
}
_sizeChanged=true;
}
但是还不够,因为您应该在其他地方再次更改其值。如果你不改变它的值(例如在其他地方改为假),它将永远不会通过'如果'条件再次。所以问题是,你应该在哪里改变它的价值。
我认为你可以更改MouseButtonUp
事件的值,因为调整大小是用鼠标完成的。
答案 1 :(得分:0)
您可以使用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;
}
}
答案 2 :(得分:0)
原来是我的Window XAML中的SizeToContent =“Width”属性导致多次调用SizeChanged。删除此属性修复了我的问题,并允许我调整窗口大小,而不会多次触发事件。感谢其他人的答案和意见!