UserControl中控件的Anchor属性问题

时间:2009-12-11 04:09:47

标签: .net anchor

创建新的自定义UserControl时遇到此问题。详细地说,我创建了一个带有DataGridView的派生UserControl,它将Anchor属性设置为[Left,Top,Right,Bottom],这样只要UserControl容器的大小发生变化,DataGridView就可以调整大小。但是当应用程序运行时,结果并不完全符合预期。 DataGridView的右边和底边始终在UserControl边框之外生长。为了理解这个问题,我已经调试并发现每当创建UserControl时,尽管我们将其设置为[800,600]或其他任何东西,但它的大小始终默认为[100,100]。我认为这是问题的原因。当我们设计UserControl时,我们使用更大的尺寸,但在运行时,其大小默认为[100,100],因此Anchor属性的自动计算变得意外。

任何人都可以给我一些如何解决这个问题的提示吗?我有一个脏的解决方案,但有时也会出现故障。我的解决方案是在UserControl的OnLoad事件处理程序中,我设置了子控件的右边和底边。这个解决方案适用于我的大多数自定义UserControl,但有时会让我误解。有时问题仍然存在。这让我感到困惑。

任何人都可以对这个问题做出明确的解释和完整的解决方案吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

有几种方法可以解决此问题,一种快速简便的方法是将GridView放在ASP PANEL(带滚动条)中,并将面板宽度设置为100%。现在网格大小无关紧要,因为您可以垂直和水平滚动。

答案 1 :(得分:0)

我现在能找到的唯一解决方案是使用用户控件执行onload事件(有点像你说的那样),除了设置相对于父用户控件发生故障的控件的高度和宽度...我有一个datagridview,我将它设置为Width - 50;和高度/ 2.5;这似乎阻止它不再增长它的父母,同时仍然给它增长锚定的效果。我认为无论出于何种原因,锚点使其锚定到窗口而不是父用户控件,这会导致此错误。