【问题标题】:Resize components inside user control while maximiziing在最大化的同时调整用户控件内的组件大小
【发布时间】:2014-12-15 14:21:06
【问题描述】:

我正在使用 c#,我正在创建一个简单的设计,其中我有一个用户控件和其中的一些组件,例如树视图和按钮。我正在尝试用一些节点填充树视图并将这些节点拖放到其他树视图并使用按钮也将节点从一侧复制到另一侧。

我遇到的问题是,当我最大化包含此用户控件的窗口时,对内部组件没有影响。

我已将用户控件的 Dock 属性设置为 Fill。

我已更改用户控件内的按钮和树视图的锚属性,但行为与预期不符。例如,我尝试将右侧树视图的锚属性设置为顶部、底部、左侧 =>,结果是一场灾难

我还为所有按钮的锚属性做了很多组合,但没有给我正确的行为。我只需要最大化窗口窗体,控件就会以相同的比例最大化。

【问题讨论】:

  • 截图?会容易理解很多。您还想在最大化表单时调整按钮的大小吗?
  • 你了解dock和anchors到底是做什么的吗?因为它非常简单,任何奇怪的行为都可以通过查看包含控件轻松解决。按钮通常只是固定在一个角落(左上角、右下角等),因此它们不会调整大小。
  • @C4ud3x 我曾尝试上传照片,但我不能,因为这是第一次在这里发帖,它要求我有 10 条建议:)
  • @Andrew 我对锚点和停靠有一点了解并使用了一段时间,但是当我将它与树视图一起使用时,一切都变得混乱这就是我想要做的:这就是我正在尝试的这就是我最大化时得到的结果:photobox.co.uk/my/photo/full?photo_id=2528891743
  • 这与我所做的 here 非常相似。

标签: c# user-controls maximize


【解决方案1】:

听起来您想要一个“3 列”界面,在该界面的两侧各有一个 TreeView,中间有一个 Buttons,以便在两者之间移动。假设这是正确的,您可以使用 TableLayout 完成自动调整大小。

基本上是这样的:

  1. 添加TableLayout 并编辑行/列,使单行包含 3 列:
    • 第一列和最后一列的大小将设置为 50%(并保留您的 TreeViews)。
    • 中间将是(例如)120 的绝对大小。这将包含您的Buttons
  2. 将此新TableLayout 的属性设置为Dock -> 填写表格。这将调整整个表格的大小以随着您的表格增长。
  3. TreeView 控件添加到左/右列并将它们设置为 Dock -> 填充相应的列。由于这些列是动态调整大小的,因此它们会随着表单增长。
  4. 在中间列中,添加Panel 并将其设置为 Dock -> Fill。我们在这里添加一个Panel 来保存您用于移动的多个Buttons。这个Panel 的大小不会变大,因为中间列的大小是绝对大小的。
  5. 将您的Buttons 添加到中间Panel

如果没有屏幕截图,我不能完全确定您要达到的目标,但我相信这是大致的。这种设置的好处是涉及零代码。

【讨论】:

  • 感谢 Jason 的回答,但在完成上述步骤后,我遇到了以下表单形状:photobox.co.uk/my/photo/full?photo_id=2528881399 这是我没有想到的,我需要添加树视图在表格的中心,当最大化时,它仍然在中心,与表格保持相同的比例,以便轻松地最大化和最小化:)
  • 这就是我想要做的,当我最大化时,我得到的就是:photobox.co.uk/my/photo/full?photo_id=2528891743
  • @MohamedSalem - 您的图形链接确实有效。它要我创建一个帐户。
  • 我怎么能在这里分享一张图片,因为我是新来发帖到堆栈溢出的:)
  • @MohamedSalem - 我的解决方案应该允许您创建 Idle_Mind 的帖子中所示的相同界面(来自您问题中的评论线程)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 2013-11-30
  • 2012-05-02
  • 2011-04-24
  • 1970-01-01
相关资源
最近更新 更多