gpt4 book ai didi

c# - Form.Move 和 Form.LocationChanged 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 20:35:49 25 4
gpt4 key购买 nike

如果您创建一个标准的 C# WinForms 应用程序,您会发现一个表单有两个事件:MoveLocationChanged

Move 在表单移动时引发,LocationChanged 在表单 location 属性更改时引发。

当然,如果表单移动,location 属性也会改变吗?

这两个事件有什么区别?在什么情况下一个会开火而另一个不会?

最佳答案

MoveLocationChanged 事件在Control 类上声明,然后由ScrollableControl 继承, ContainerControl 最后是 Form

根据source code , OnLocationChanged 调用 OnMove before 它调用 LocationChanged 事件处理程序。因此,将首先引发 OnMove 事件,然后 LocationChanged。理论上您可以处理这两个事件,因为您知道 Move 将首先发生。

如果您查看源代码,您会看到当边界发生变化(或类似事件)时会引发 LocationChanged。您还会注意到 唯一 实际调用 OnMove 的实际上是 OnLocationChanged

根据 MSDN , LocationChanged 事件:

Occurs when the Location property value has changed.... This event is raised if the Location property is changed by either a programmatic modification or through interaction.

它使 no such distinction对于 OnMove,它仅说明:

Occurs when the control is moved.

这很奇怪,因为这两个事件相互关联。

然而,这是一个特定类处理这些事件的方式。我对引用源做了一些搜索,除了我已经引用的实例之外,我找不到任何明确调用 OnMove 的内容(继承自 Control)。这并不意味着它们不存在或不能在它们自己的 Control 子类中单独调用它。

关于c# - Form.Move 和 Form.LocationChanged 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51343581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com