UserControl的属性不会更新y

我有一个UserControl (winforms)放置在一个窗体上(实际上是一个Weifen.Luo.DockContentWeifen.Luo.DockContent是从基本窗体派生的)。 为窗体启用AutoScroll ,并且可以通过拖动(更准确地说,通过评估MouseDownMouseMoveMouseUp和更新Location )来移动控件。

有时*到达边界时(以便表格的飞机必须进一步放大)更新控制器的位置突然停止工作; 设置Location = ..失败。 在调试时从即时窗口演示一个片段:

>Location
{X = 50 Y = 751}
    IsEmpty: false
    X: 50
    x: 50
    Y: 751
    y: 751

但更新后...

>Location = new Point(30, 40);
>Location
{X = 30 Y = 751}
    IsEmpty: false
    X: 30
    x: 30
    Y: 751
    y: 751

y值仍然保持不变。 怎么会这样? 看起来好像附有一个LocationChanged-Handler(外部用户代码),这对我很有用。 任何提示?

*)虽然我无法在发生时找到确切的案例,但我找到了重现它的方法,例如,将文本框聚焦到控件上,然后将其移动到边缘或将一个(空的!) Load事件处理程序添加到控制 - 很奇怪。 我知道这听起来更像是一场竞赛。 但目前我不知道该去哪里寻找。


更新:每次更新失败时,父窗体的AutoScrollPosition会被更新,结果会导致delta(AutoScrollPosition之前和之后)= delta(Location,newValueForLocation)。

链接地址: http://www.djcxy.com/p/58375.html

上一篇: Attribute of a UserControl does not update the y

下一篇: How to change the place of textbox when changing the size of the form