我有UserControl
(winforms)放在表格上(实际上是Weifen.Luo.DockContent
,再次来自基本表格)。 {* 1}}已为表单启用,并且可以通过拖动来移动控件(更准确地说,通过评估AutoScroll
,MouseDown
,MouseMove
并更新MouseUp
})。
有时*到达边界时(因此必须进一步放大表格的平面)更新控制位置突然停止工作;设置Location
失败。为了演示在调试时来自即时窗口的片段:
Location = ..
但更新后......
>Location
{X = 50 Y = 751}
IsEmpty: false
X: 50
x: 50
Y: 751
y: 751
.. y值仍然保持不变。怎么会这样?似乎附加了一个LocationChanged-Handler(外部用户代码)对我起作用。任何提示?
*)虽然我无法在发生确切的情况时找到确切的案例,但我找到了重现它的方法,例如:将文本框聚焦到控件上然后将其移动到边缘或向控件添加(空!)>Location = new Point(30, 40);
>Location
{X = 30 Y = 751}
IsEmpty: false
X: 30
x: 30
Y: 751
y: 751
事件处理程序时 - 很奇怪。我知道这听起来更像是竞争条件。但目前我还不知道该去哪里搜索。
更新:每次更新失败时,父表单Load
都会更新,从而导致 delta(之前和之后的AutoScrollPosition)= delta(Location,newValueForLocation)