设置窗口位置

本文关键字:位置 窗口 设置 | 更新日期: 2023-09-27 18:05:58

Background

我正在编写一个移动屏幕上大量窗口的应用程序,这需要实时约束。我通常使用以下格式设置窗口位置:

this.Left = position.x;
this.Top = position.y;
<标题>

我想知道的是这是否是最快或最有效的方法。设置Left会自动触发事件刷新吗,还是等待OnRender事件?

其次,为什么没有一个简单地设置位置的函数呢?或者这有必要吗?我知道Windows API有SetWindowPos,但我宁愿远离非托管代码。使用这个函数会更快吗?

设置窗口位置

我不确定它是否最有效,但多次调用它可能会有性能问题。这样做的原因是因为LeftTop依赖属性有一个PropertyChangedCallback实例设置为OnPositioningChanged方法。这个方法调用InvalidateArrange。从链接:

频繁调用InvalidateArrange或UpdateLayout有显著的性能影响。

我知道这是一个显而易见的答案,但最好的方法是对两种方法进行基准测试,看看哪一种适合你。无论您是选择非托管路线还是坚持使用当前方法,我都认为在某些时候必须进行相同的呈现调用(很高兴在这方面得到纠正)。