【问题标题】:How to change position of inherited items in an Inherited user control如何在继承的用户控件中更改继承项的位置
【发布时间】:2012-11-18 10:56:30
【问题描述】:

我使用了一个用户控件作为基类(我们称之为 BaseUC),上面有 3 个标签(3 行)(它们被设置为受保护)。

还有一个继承自它的用户控件(InheritedUC)。我在 InheritedUC 中添加了两个标签,它们位于基础标签之间(所以有 5 行)。

Visual Studio 的设计 UI 视图一切正常。但是当我运行应用程序时,BaseUC 上的标签与 InheritedUC 中的标签重叠,我看不到继承控件上的标签。

有解决这个问题的想法吗?非常感谢

【问题讨论】:

  • 这是一个设计问题。与您的 html 或 CSS 相关。它不是 asp.net、C# 或继承问题。
  • 您可能需要明确设置顶部和左侧位置,只需检查现在正在渲染/生成的内容。或者在您的子类也可以使用的基类中使用某种经过计算的公共属性。
  • 谢谢 ryadavilli。我确实在继承的类中明确设置了最高职位。但我在想,如果我能以某种方式避免这样做。

标签: c# winforms visual-studio inheritance user-controls


【解决方案1】:

来自 MSDN:Control.Anchor Property

使用 Anchor 属性来定义控件如何自动 随着其父控件的大小调整而调整大小。 将控件锚定到其 父控件确保锚定边缘保持不变 父控件相对于父控件边缘的位置 控件已调整大小。

您可以将控件锚定到其容器的一个或多个边缘。为了 例如,如果您有一个带有 Anchor 属性值的 Button 的 Form 设置为 Top 和 Bottom,Button 被拉伸以保持 到窗体的顶部和底部边缘的锚定距离作为 窗体的高度增加了。

在所有标签上设置 Anchor 属性: 例如:

label1.Anchor = AnchorStyles.Top | AnchorStyles.Left;

【讨论】:

    【解决方案2】:

    如果您将控件放在FlowLayoutPanel 中并设置以下选项:

    AutoScroll = True
    FlowDirection = TopDown
    WrapContents = False
    

    然后,您应该会获得随着控件的添加或删除而增大和缩小的面板。

    Source

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多