【发布时间】:2013-05-30 18:03:51
【问题描述】:
上下文:
我创建了一个User Control。出于某种原因,我想以不同的大小使用此控件。为了在重新调整大小时保留User Control 的初始“模板”,我在控件内的不同元素上使用属性 Anchor。
因此,当我在设计时创建控件时,我可以手动重新调整大小控件并保留它的原始“模板”。
控件创建后如下所示:
在重新调整大小后:
如您所见,属性 Anchor 运行良好。
- 标签和图片位于中间。
- “?”留在左边的角落。
问题:
我遇到的问题是,当控件重新加载时,创建的大小与初始大小不同,里面的所有元素都返回到它们的初始位置:
我不知道这是否是我努力实现目标的更好方法。请记住,我在设计时添加并调整了控件的大小。
谢谢。
编辑:
我认为我的问题是由设计师造成的。例如:我在设计器中添加我的控件,我重新调整它的大小,我运行解决方案。一切正常。但是当我转到页面的代码,然后,返回设计器时,控件内部的元素又回到了它们的初始位置。
编辑 2:
好的,我找到了解决方案,我只是将User control 的所有元素移动到Panel 中。 出于某种我无法解释的原因,它运行良好。控件停留在同一位置。
【问题讨论】:
-
您可以使用 ResizeEnd 事件来应用它们在 ResizeBegin 中使用的相同属性。当您说重新加载时,控件是否获得了一个完整的新实例?如果是这样,它应该总是调用 InitializeComponent 来应用设计器中定义的属性。
-
我不太确定要尝试什么,因为我的问题似乎是设计师的问题。例如:我在我的设计器中添加了我的控件,我重新调整了它的大小,我运行了解决方案。一切正常。但是当我转到页面的代码,然后,返回设计器时,控件内的元素返回到它们的初始位置......
-
这太模糊了。您需要解释这个控件究竟是如何“重新加载”但不再使用其原始设计尺寸的。以及为什么不再进行加载控件后发出的正常 PerformLayout() 调用。
-
重新加载后,使用调试器验证您控制的 Anchor 的值。此外,Dock 属性会覆盖 Anchor 属性,因此您也必须验证这一点。
-
好的,我正在看这个,谢谢。
标签: c# .net winforms user-controls