【问题标题】:is it possible to anchor a control to another control?是否可以将控件锚定到另一个控件?
【发布时间】:2011-11-05 14:02:54
【问题描述】:

是否可以将一个控件锚定到另一个控件?

假设我希望我的 Button1 与 Textbox1 控件保持 4px 的距离,而没有
使用 FlowLayoutTable 控件?

“为什么会有这样的优势?” - 有人可以问

假设您有一个带有垂直分离器的SplitContainer,并且您有Textboxes
SplitContainer.Panel1 中,它们锚定在左侧和右侧,但它们的最大尺寸是
宽度小于您允许的 SplitContainer.Panel1's 宽度(也许
因为你希望文本显示在那里,或者因为额外的填充或其他,你命名它)

现在假设您在 Textbox1 旁边还有一个按钮,并且您不希望 Textbox1 成为
Button1 重叠,因为它延伸到很远。

如果我想让我的textbox 填充SplitContainer.Panel1,以便为
Button1 控件留出空间,同时它们仍然固定在右侧,我该怎么做?

【问题讨论】:

  • 很难从问题中形象化。 Anchor 适合简单的布局。通过订阅 SplitterMoving 事件或控件的 LocationChanged 或 SizeChanged 事件并更改 Location 或 Size 属性来实现自定义布局。
  • @Hans 谢谢,我认为这将是一种解决方法,或者更可能是正确的方法,我只是想知道这是否可能,但你的回答引发了我的另一个问题,我可能或者可能不会在这里或其他问题中问:)

标签: vb.net user-interface .net-4.0 controls anchor


【解决方案1】:

这将是一个现场序列,应该从左侧流出并继续工作,让右侧应该是布局。

  1. 应提供列表项安全护理。
  2. 在此方法中使用的所有东西都应提供并检查;

【讨论】:

    【解决方案2】:

    我广泛使用 TableLayoutPanels 和 FlowLayoutPanels 来实现这一点。对于您的具体情况,我将使用 TableLayoutPanel,其中每个 TextBox 具有三列和一行。

    第 1 列:自动宽度,包含所有带有 AutoSize = True 的标签。
    第 2 列:100% 宽度,包含所有带有 Anchor = Left, Right 的文本框。
    第 3 列:自动宽度,包含相应行中的 Button。

    接下来,我设置了所有文本框,除了按钮旁边的 ColumnSpan = 2。然后只需将 TableLayoutPanel 放入 SplitPanel 并设置Dock = Fill

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2012-08-20
      • 2011-11-14
      • 1970-01-01
      • 2017-05-24
      • 2015-03-17
      • 1970-01-01
      相关资源
      最近更新 更多